出于安全目的,我想在发送数据之前对摄像机的RTSP流进行加密。 为此,我设置了具有SSL加密的NGINX服务器:
nginx.conf:
stream {
upstream rtsp_backend {
server 10.0.1.1:554; #my dahua camera
#server 184.72.239.149:554; #big buck bunny stream
}
server {
listen 12345 ssl;
proxy_pass rtsp_backend;
ssl_certificate /etc/nginx/dev_nginx.chain.crt;
ssl_certificate_key /etc/nginx/dev_nginx.key;
}
我用ffplay命令测试我的配置:
ffplay -rtsp_transport tcp rtsps://user:password@127.0.0.1:12345/live
此配置可与buck bunny流一起正常工作-该流在nginx和ffplay之间进行了加密。当我用ffmpeg / ffserver自己创建rtsp流时,它也可以正常工作。
但是:问题出在我现在真正用的是大华相机(IPC-HFW1431S)。 FFPLAY告诉我:
[tls @ 0x7f7f18002e80] No default whitelist set
[tcp @ 0x7f7f18003420] No default whitelist set
[rtsp @ 0x7f7f18000b80] method OPTIONS failed: 404 Not Found
因此,对选项(SDP)的请求失败,找不到文件。 当我删除Nginx的ssl语句时,一切都很好。 我想念什么?没有SSL,一切正常。 摄像机和其他RTSP流之间的唯一区别是身份验证。但这似乎可以,因为这是在OPTIONS请求之前完成的,并且成功。