Код 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
Вы можете найти информацию об этих параметрах здесь.