в целях безопасности Я хочу зашифровать поток RTSP камеры перед отправкой данных в мир.
Для этого я настроил сервер NGINX с шифрованием SSL:
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
Эта конфигурация прекрасно работает с потоком доллара кролика - поток шифруется между nginx и ffplay. И это также прекрасно работает, когда я сам создаю поток rtsp с помощью ffmpeg / ffserver.
НО: проблема сейчас в моем реальном случае использования с камерой Dahua (IPC-HFW1431S).
FFPLAY говорит мне:
[tls @ 0x7f7f18002e80] No default whitelist set
[tcp @ 0x7f7f18003420] No default whitelist set
[rtsp @ 0x7f7f18000b80] method OPTIONS failed: 404 Not Found
Таким образом, запрос параметров (SDP) не выполняется, файл не найден.
Когда я удаляю ssl-операторы nginx, все нормально.
Что мне не хватает? Все отлично работает без SSL.
Единственная разница между камерой и другими потоками RTSP заключается в аутентификации. Но, похоже, это нормально, потому что это делается до запроса OPTIONS, и он успешно выполняется.