Код NetConnection.Connect.SSLHandshakeFailed на моем сервере RED5

У меня есть AS3 flash, опубликованный с Flash Professional CC и опубликованный для Flash Player13.

Проблема: Когда я создаю NetConnection к своему RTMP-серверу (RED5 v1.1), я получаю следующее сообщение об ошибке: NetConnection.Connect.SSLHandshakeFailed.

Я использую следующий код:

nc = new NetConnection();
nc.objectEncoding = ObjectEncoding.AMF3;
nc.client = this;
nc.proxyType = "best";
nc.addEventListener(NetStatusEvent.NET_STATUS, netSAServerRTMPStatus);
nc.connect("rtmps://myappserver.mydomain.com/myApp", myChannel);
private function netSAServerRTMPStatus(event:NetStatusEvent):void
{
     trace(event.info.code);
}

Если я не установил proxyType или установил какой-либо другой параметр, соединение никогда не будет установлено, но если я установлю его как "лучший", я могу иногда создать соединение, но не всегда.

На моем сервере у меня есть сертификат SSL, подписанный Geo Trust Inc, и его общее имя (CN) = *.mydomain.com

Кто-нибудь может мне помочь? Я могу дать больше информации, если это необходимо.

С наилучшими пожеланиями, Pimager

1 ответ

Вы можете включить отладку ssl для получения более подробной информации в случае сбоя; добавьте эту запись в ваш JAVA_OPTS:

-Djavax.net.debug=ssl

Затем вы увидите записи, подобные этой, в вашем журнале:

javax.net.ssl.SSLHandshakeException: Client requested protocol TLSv1 not enabled or not supported

и / или

Exception caught on session: 1 id: EPP7XKEM0XUWC javax.net.ssl.SSLHandshakeException: SSL handshake failed.

В показанном случае TLSv1 был запрошен клиентом и отклонен.

Обновить

Еще одна вещь, которую вы можете проверить, это включить устаревшие вещи через параметр в вашем red5.sh; добавьте их в свой JAVA_OPTS:

-Dsun.security.ssl.allowUnsafeRenegotiation=true -Dsun.security.ssl.allowLegacyHelloMessages=true

Вы можете найти информацию об этих параметрах здесь.

Другие вопросы по тегам