Эта проблема преследует меня уже довольно давно.
Я установил Stunnel (v5.59) на рабочий стол Windows10.
Сертификаты были сгенерированы с помощью Certbot (beta1.15.0) для моей внутренней сети.
Конфигурация Stunnel выглядит следующим образом:
сокет = л: TCP_NODELAY = 1
сокет = г: TCP_NODELAY = 1
вывод = stunnel.log
отладка = 7
[rtsp]
сертификат = fullchain1.pem
ключ = privkey1.pem
sslVersion = TLSv1.2
опции = NO_SSLv2
параметры = NO_SSLv3
принять = 443
подключение = 192.168.30.1:7447
ТАЙМ-АУТclose= 0
При запуске Stunnel логи выглядят следующим образом:
2021.10.08 12:24:49 LOG6[main]: Инициализация конфигурации режима inetd
2021.10.08 12:24:49 LOG7[main]: работает в Windows 6.2
2021.10.08 12:24:49 LOG7[main]: не обнаружено ограничение на количество клиентов
2021.10.08 12:24:49 LOG5[main]: stunnel 5.59 на платформе x64-pc-mingw32-gnu
2021.10.08 12:24:49 LOG5[main]: скомпилировано/запущено с OpenSSL 1.1.1k 25 марта 2021 г.
2021.10.08 12:24:49 LOG5[main]: Threading:WIN32 Sockets:SELECT,IPv6 TLS:ENGINE,OCSP,PSK,SNI
2021.10.08 12:24:49 LOG7[основная]: ошибка: (*_errno())
2021.10.08 12:24:49 LOG7[ui]: инициализирован цикл сообщений GUI
2021.10.08 12:24:49 LOG6[main]: Инициализация конфигурации режима inetd
2021.10.08 12:24:49 LOG7[main]: работает в Windows 6.2
2021.10.08 12:24:49 LOG5[main]: Чтение конфигурации из файла stunnel.conf
2021.10.08 12:24:49 LOG5[main]: обнаружена метка порядка байтов UTF-8
2021.10.08 12:24:49 LOG5[main]: режим FIPS отключен
2021.10.08 12:24:49 LOG6[main]: сжатие включено: 0 методов
2021.10.08 12:24:49 LOG7[main]: заполнение PRNG не требовалось
2021.10.08 12:24:49 LOG6[main]: Инициализация службы [rtsp]
2021.10.08 12:24:49 LOG6[main]: установлен уровень безопасности stunnel по умолчанию: 2
2021.10.08 12:24:49 LOG7[main]: Шифры: HIGH:!aNULL:!SSLv2:!DH:!kDHEPSK
2021.10.08 12:24:49 LOG7[main]: наборы шифров TLSv1.3: TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256
2021.10.08 12:24:49 LOG7[main]: параметры TLS: 0x02100004 (+0x02000000, -0x00000000)
2021.10.08 12:24:49 LOG6[main]: Загрузка сертификата из файла: fullchain1.pem
2021.10.08 12:24:49 LOG6[main]: сертификат загружен из файла: fullchain1.pem
2021.10.08 12:24:49 LOG6[main]: Загрузка закрытого ключа из файла: privkey1.pem
2021.10.08 12:24:49 LOG6[main]: Закрытый ключ загружен из файла: privkey1.pem
2021.10.08 12:24:49 LOG7[main]: проверка закрытого ключа прошла успешно
2021.10.08 12:24:49 LOG6[main]: Инициализация DH пропущена: наборов шифров DH нет
2021.10.08 12:24:49 LOG7[main]: Инициализация ECDH
2021.10.08 12:24:49 LOG7[main]: ECDH инициализирован кривыми X25519:P-256:X448:P-521:P-384
2021.10.08 12:24:49 LOG5[main]: конфигурация выполнена успешно
2021.10.08 12:24:49 LOG7[main]: удаление значений по умолчанию для развернутого раздела
2021.10.08 12:24:49 LOG7[main]: Служба привязки [rtsp]
2021.10.08 12:24:49 LOG7[main]: создан дескриптор прослушиваемого файла (FD=528)
2021.10.08 12:24:49 LOG7[main]: Настройка параметров сокета (FD=528)
2021.10.08 12:24:49 LOG7[main]: параметр SO_EXCLUSIVEADDRUSE установлен для принимающего сокета
2021.10.08 12:24:49 LOG6[main]: служба [rtsp] (FD=528) привязана к 0.0.0.0:443
2021.10.08 12:24:49 LOG7[cron]: поток Cron инициализирован
2021.10.08 12:24:49 LOG6[cron]: выполнение заданий cron
2021.10.08 12:24:49 LOG6[cron]: задания Cron завершены за 0 секунд
2021.10.08 12:24:49 LOG7[cron]: Ожидание 86400 секунд
Из медиаплеера VLC на том же компьютере, на котором работает Stunnel, я попытался получить доступ к ошеломленному потоку RTSP.
2021.10.08 12:27:16 LOG7[main]: найден 1 готовый файловый дескриптор(ы)
2021.10.08 12:27:16 LOG7[main]: FD=528 ifds=r-x ofds=r--
2021.10.08 12:27:16 LOG7[main]: FD=556 ifds=r-x ofds=---
2021.10.08 12:27:16 LOG7[main]: Служба [rtsp] принята (FD=848) от 192.168.30.178:55336
2021.10.08 12:27:16 LOG7[main]: Создание нового потока
2021.10.08 12:27:16 LOG7[main]: создан новый поток
2021.10.08 12:27:16 LOG7[0]: служба [rtsp] запущена
2021.10.08 12:27:16 LOG7[0]: установка параметров локального сокета (FD=848)
2021.10.08 12:27:16 LOG7[0]: параметр TCP_NODELAY установлен для локального сокета
2021.10.08 12:27:16 LOG5[0]: Служба [rtsp] приняла соединение с 192.168.30.178:55336
2021.10.08 12:27:16 LOG6[0]: одноранговый сертификат не требуется
2021.10.08 12:27:16 LOG7[0]: состояние TLS (принятие): перед инициализацией SSL
2021.10.08 12:27:16 LOG3[0]: SSL_accept: ssl/record/ssl3_record.c:331: ошибка:1408F10B:процедуры SSL:ssl3_get_record:неверный номер версии
2021.10.08 12:27:16 LOG5[0]: сброс соединения: 0 байтов отправлено в TLS, 0 байтов отправлено в сокет
2021.10.08 12:27:16 LOG7[0]: локальный дескриптор (FD=848) закрыт
2021.10.08 12:27:16 LOG7[0]: служба [rtsp] завершена (осталось 0)
Может ли кто-нибудь дать мне подсказки? Я попытался найти в Google «Ssl3_get_record: неправильный номер версии». Но результаты не помогают.
Я выполнил следующую команду для подключения к stunnel-машине:
openssl s_client -connect <domain_of_stunnel_machine>:443 -tls1_2
Stunnel ответил логами:
2021.10.08 12:51:57 LOG7[main]: найден 1 готовый файловый дескриптор(ы)
2021.10.08 12:51:57 LOG7[main]: FD=540 ifds=r-x ofds=r--
2021.10.08 12:51:57 LOG7[main]: FD=548 ifds=r-x ofds=---
2021.10.08 12:51:57 LOG7[main]: Служба [rtsp] принята (FD=868) от 192.168.30.169:53837
2021.10.08 12:51:57 LOG7[main]: Создание нового потока
2021.10.08 12:51:57 LOG7[main]: создан новый поток
2021.10.08 12:51:57 LOG7[0]: служба [rtsp] запущена
2021.10.08 12:51:57 LOG7[0]: установка параметров локального сокета (FD=868)
2021.10.08 12:51:57 LOG7[0]: параметр TCP_NODELAY установлен для локального сокета
2021.10.08 12:51:57 LOG5[0]: Служба [rtsp] приняла соединение с 192.168.30.169:53837
2021.10.08 12:51:57 LOG6[0]: одноранговый сертификат не требуется
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принятие): перед инициализацией SSL
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принятие): перед инициализацией SSL
2021.10.08 12:51:57 LOG7[0]: обратный вызов билета сеанса расшифровки
2021.10.08 12:51:57 LOG7[0]: инициализация конкретных данных приложения для аутентификации сеанса
2021.10.08 12:51:57 LOG7[0]: SNI: виртуальные службы не определены
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принять): SSLv3/TLS читать клиент привет
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принять): сервер записи SSLv3/TLS привет
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принять): сертификат записи SSLv3/TLS
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принять): обмен ключами записи SSLv3/TLS
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принято): сервер записи SSLv3/TLS выполнен
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принято): сервер записи SSLv3/TLS выполнен
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принятие): обмен ключами клиента чтения SSLv3/TLS
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принятие): SSLv3/TLS чтение изменения спецификации шифра
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принятие): чтение SSLv3/TLS завершено
2021.10.08 12:51:57 LOG7[0]: Создать обратный вызов билета сеанса
2021.10.08 12:51:57 LOG7[0]: инициализация конкретных данных приложения для аутентификации сеанса
2021.10.08 12:51:57 LOG7[0]: освобождение конкретных данных приложения для адреса подключения сеанса
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принять): билет сеанса записи SSLv3/TLS
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принятие): SSLv3/TLS запись изменения спецификации шифра
2021.10.08 12:51:57 LOG7[0]: состояние TLS (принятие): запись SSLv3/TLS завершена
2021.10.08 12:51:57 LOG7[0]: запрошен 1 сервер.
2021.10.08 12:51:57 LOG7[0]: успешно принят 1 сервер
2021.10.08 12:51:57 LOG7[0]: 0 запрошено повторное согласование сервера
2021.10.08 12:51:57 LOG7[0]: повторное использование сеанса 0
2021.10.08 12:51:57 LOG7[0]: 0 элементов внутреннего кэша сеанса
2021.10.08 12:51:57 LOG7[0]: 0 внутреннее заполнение кэша сеанса
2021.10.08 12:51:57 LOG7[0]: 0 отсутствие внутреннего кэша сеанса
2021.10.08 12:51:57 LOG7[0]: 0 попаданий в кэш внешнего сеанса
2021.10.08 12:51:57 LOG7[0]: получено 0 сеансов с истекшим сроком действия
2021.10.08 12:51:57 LOG6[0]: TLS принят: согласован новый сеанс
2021.10.08 12:51:57 LOG6[0]: Набор шифров TLSv1.2: ECDHE-RSA-AES256-GCM-SHA384 (256-битное шифрование)
2021.10.08 12:51:57 LOG3[0]: SSL_get_peer_tmp_key: узел внезапно отключился
2021.10.08 12:51:57 LOG7[0]: сжатие: ноль, расширение: ноль
2021.10.08 12:51:57 LOG6[0]: s_connect: подключение 192.168.30.1:7447
2021.10.08 12:51:57 LOG7[0]: s_connect: s_poll_wait 192.168.30.1:7447: ожидание 10 секунд
2021.10.08 12:51:57 LOG7[0]: FD=868 ifds=--- ofds=r--
2021.10.08 12:51:57 LOG7[0]: FD=892 ifds=rwx ofds=---
2021.10.08 12:51:57 LOG5[0]: s_connect: подключено 192.168.30.1:7447
2021.10.08 12:51:57 LOG6[0]: постоянство: 192.168.30.1:7447 в кэше
2021.10.08 12:51:57 LOG5[0]: Служба [rtsp] подключилась к удаленному серверу с 192.168.30.178:54762
2021.10.08 12:51:57 LOG7[0]: настройка параметров удаленного сокета (FD=892)
2021.10.08 12:51:57 LOG7[0]: параметр TCP_NODELAY установлен для удаленного сокета
2021.10.08 12:51:57 LOG7[0]: удаленный дескриптор (FD=892) инициализирован