Red5 RTMPS не удалось подключиться с самозаверяющим сертификатом

Я использую Red5 1.0.3 и пытаюсь выполнить RTMPS через порт 8443 с самоподписанным сертификатом.

Что я уже сделал:

  • Включен RTMPS в conf/red5-core.xml
  • Добавил свой самозаверяющий сертификат в хранилище ключей и хранилище доверенных сертификатов.
  • Подтверждено правильность фразы-пароля для хранилища ключей и хранилища доверенных сертификатов (это тест, поэтому фразы-пароли одинаковы для простоты)
  • Решена проблема «ненадежного сертификата», приняв исключение в моем браузере (используя Chrome в Ubuntu)
  • Убедился, что Red5 прослушивает 8443 и порт можно подключить

Следующим блокпостом, который у меня есть, является «пустой ответ» в браузере при попытке подключения к Red5.

Из журнала Red5:

[DEBUG] [NioProcessor-30] org.red5.server.net.rtmps.RTMPSMinaIoHandler - SSL provider is: SunJSSE version 1.7
[DEBUG] [NioProcessor-30] org.red5.server.BaseConnection - New BaseConnection - type: persistent
[DEBUG] [NioProcessor-30] org.red5.server.BaseConnection - Generated session id: 7DTVIWZ5UXILR
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPConnection - startWaitForHandshake - 7DTVIWZ5UXILR
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPMinaIoHandler - Session opened: 77 id: 7DTVIWZ5UXILR
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPMinaIoHandler - Session closed: 77 id: 7DTVIWZ5UXILR
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.BaseRTMPHandler - connectionClosed: 7DTVIWZ5UXILR
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPConnection - close: 7DTVIWZ5UXILR
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPConnection - State: connect
[DEBUG] [NioProcessor-30] org.red5.server.api.Red5 - Set connection: 7DTVIWZ5UXILR with thread: NioProcessor-30
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPConnection - Stream service was not found for scope: null or non-existant
[DEBUG] [NioProcessor-30] org.red5.server.BaseConnection - Close, not connected nothing to do
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPConnection - Shutting down scheduler
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPConnection - Scheduler - shutdown: true queued: 0
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPConnection - Shutting down executor
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPConnection - Executor - shutdown: true queued: 0
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPMinaConnection - IO Session closing: true
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.RTMPMinaConnection - Connection state: RTMP [state=disconnecting, encrypted=false, readChunkSize=128, writeChunkSize=128, encoding=AMF0]
[DEBUG] [NioProcessor-30] org.red5.server.net.rtmp.BaseRTMPHandler - connectionClosed: 7DTVIWZ5UXILR
[DEBUG] [NioProcessor-30] org.red5.server.api.Red5 - Set connection: null with thread: NioProcessor-30
[DEBUG] [NioProcessor-31] org.red5.server.net.rtmps.RTMPSMinaIoHandler - SSL provider is: SunJSSE version 1.7
[DEBUG] [NioProcessor-31] org.red5.server.BaseConnection - New BaseConnection - type: persistent
[DEBUG] [NioProcessor-31] org.red5.server.BaseConnection - Generated session id: UB7GI0V7POCE2
[DEBUG] [NioProcessor-31] org.red5.server.net.rtmp.RTMPConnection - startWaitForHandshake - UB7GI0V7POCE2
[DEBUG] [NioProcessor-31] org.red5.server.net.rtmp.RTMPMinaIoHandler - Session opened: 78 id: UB7GI0V7POCE2
[DEBUG] [NioProcessor-31] org.red5.server.api.Red5 - Get connection on thread: NioProcessor-31
[DEBUG] [NioProcessor-31] org.red5.server.api.Red5 - Set connection: UB7GI0V7POCE2 with thread: NioProcessor-31
[DEBUG] [NioProcessor-31] org.red5.server.net.rtmp.codec.RTMPProtocolDecoder - decodeHandshake - state: RTMPDecodeState [sessionId=UB7GI0V7POCE2, decoderState=0, decoderBufferAmount=0] buffer: HeapBuffer[pos=0 lim=377 cap=1536: 50 4F 53 54 20 2F 6F 70 65 6E 2F 31 20 48 54 54...]
[DEBUG] [NioProcessor-31] org.red5.server.net.rtmp.codec.RTMPProtocolDecoder - Handshake init too small, buffering. remaining: 377
[DEBUG] [NioProcessor-31] org.red5.server.api.Red5 - Set connection: null with thread: NioProcessor-31
[WARN] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPConnection - Closing UB7GI0V7POCE2, due to long handshake. State: connect
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPConnection - close: UB7GI0V7POCE2
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPConnection - State: connect
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.api.Red5 - Set connection: UB7GI0V7POCE2 with thread: RTMPConnectionExecutor#14164738195671
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPConnection - Stream service was not found for scope: null or non-existant
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.BaseConnection - Close, not connected nothing to do
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPConnection - Shutting down scheduler
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPConnection - Scheduler - shutdown: true queued: 0
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPConnection - Shutting down executor
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPConnection - Executor - shutdown: true queued: 0
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPMinaConnection - IO Session closing: false
[DEBUG] [NioProcessor-31] org.red5.server.net.rtmp.RTMPMinaIoHandler - Session closed: 78 id: UB7GI0V7POCE2
[DEBUG] [NioProcessor-31] org.red5.server.net.rtmp.BaseRTMPHandler - connectionClosed: UB7GI0V7POCE2
[DEBUG] [NioProcessor-31] org.red5.server.api.Red5 - Set connection: null with thread: NioProcessor-31
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPMinaConnection - Connection close future: org.apache.mina.core.future.DefaultCloseFuture@41fb8175
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPMinaConnection - Connection is closed
[WARN] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPConnManager - Connection not found for UB7GI0V7POCE2
[DEBUG] [RTMPConnectionExecutor#14164738195671] org.red5.server.net.rtmp.RTMPMinaConnection - Connection state: RTMP [state=disconnected, encrypted=false, readChunkSize=128, writeChunkSize=128, encoding=AMF0]

Соединение просто закрывается. При ближайшем рассмотрении с помощью Wireshark я обнаружил зашифрованное предупреждение (21), которое, насколько я понимаю, означает неудачную расшифровку. Пока нет намеков на то, почему это не удалось, но это произошло.

В браузере (флеш-клиенте) консоль выводит

POST https://10.32.1.218:8443/open/1 net::ERR_EMPTY_RESPONSE 10.32.1.218:8443/open/1:1
DEBUG: Flash says: NetworkManager: NetConnection.Connect.Failed 

Прочитав самоподписанный сертификат Red5 и RTMPS, я приступил к использованию настоящего сертификат (от StartCom), но при подключении к Red5 с этим сертификатом я получаю

javax.net.ssl.SSLHandshakeException: SSL handshake failed.
Caused by: javax.net.ssl.SSLHandshakeException: no cipher suites in common

На что я попытался повторно добавить сертификат в хранилище ключей и хранилище доверенных сертификатов с помощью -keyalg RSA (чтобы быть явным), но это не помогло.

Итак, вернемся к самозаверяющим сертификатам… во всяком случае, пока.

Совет? Возможно, клиент не принимает ненадежные сертификаты и время рукопожатия истекает? Любые новые пути, чтобы посмотреть вниз, будут оценены.

Обновить

После обновления клиента Flash и установки свойства NetConnection proxyType = "best" Flash теперь выводит NetworkManager: NetConnection.Connect.SSLHandshakeFailed

Обновление II

Я понял, что неправильно добавил сертификаты в хранилище ключей и хранилище доверенных сертификатов. Я добавил ключи в хранилища ключей, не добавляя также их закрытые ключи.

Для этого я использовал следующий ответ

Я также перешел от самоподписанного сертификата к сертификату, подписанному центром сертификации. Проблемы с самоподписанным не стоило решать в моей ситуации.


person Adam    schedule 20.11.2014    source источник