#java #ssl
#java #ssl
Вопрос:
Я застрял с приведенным ниже исключением SSL:
ERROR STDERR - javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
2016-10-21 07:26:37,502 [http-10.8.184.11-8080-14] ERROR STDERR - at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
2016-10-21 07:26:37,502 [http-10.8.184.11-8080-14] ERROR STDERR - at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
2016-10-21 07:26:37,502 [http-10.8.184.11-8080-14] ERROR STDERR - at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1822)
В журналах отладки SSL указано ниже:
INFO STDOUT - http-10.8.184.11-8080-14, WRITE: TLSv1 Handshake, length = 81
2016-10-21 07:26:37,499 [http-10.8.184.11-8080-14] INFO STDOUT - http-10.8.184.11-8080-14, WRITE: SSLv2 client hello message, length = 110
2016-10-21 07:26:37,501 [http-10.8.184.11-8080-14] INFO STDOUT - http-10.8.184.11-8080-14, READ: Unknown-3.3 Alert, length = 2
2016-10-21 07:26:37,501 [http-10.8.184.11-8080-14] INFO STDOUT - http-10.8.184.11-8080-14
2016-10-21 07:26:37,501 [http-10.8.184.11-8080-14] INFO STDOUT - , RECV TLSv1 ALERT:
2016-10-21 07:26:37,501 [http-10.8.184.11-8080-14] INFO STDOUT - fatal,
2016-10-21 07:26:37,501 [http-10.8.184.11-8080-14] INFO STDOUT - handshake_failure
2016-10-21 07:26:37,501 [http-10.8.184.11-8080-14] INFO STDOUT - http-10.8.184.11-8080-14, called closeSocket()
2016-10-21 07:26:37,501 [http-10.8.184.11-8080-14] INFO STDOUT - http-10.8.184.11-8080-14, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
2016-10-21 07:26:37,502 [http-10.8.184.11-8080-14] INFO STDOUT - http-10.8.184.11-8080-14, called close()
2016-10-21 07:26:37,502 [http-10.8.184.11-8080-14] INFO STDOUT - http-10.8.184.11-8080-14, called closeInternal(true)
2016-10-21 07:26:37,502 [http-10.8.184.11-8080-14] ERROR STDERR - javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
2016-10-21 07:26:37,502 [http-10.8.184.11-8080-14] ERROR STDERR - at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
2016-10-21 07:26:37,502 [http-10.8.184.11-8080-14] ERROR STDERR - at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
Комментарии:
1. Используете ли вы самозаверяющий сертификат? Похоже, что вы отправляете запрос против
http
insted ofhttps
, можем ли мы взглянуть на фрагмент кода? какой тип приложения? это стандартная java, ee или Android?2. Уже существует много-много вопросов по поводу такого сбоя рукопожатия. Пожалуйста, ознакомьтесь с этим вопросом, и если вы не найдете там ответа, опубликуйте достаточно информации, которая прояснит, чем ваш вопрос отличается от всех этих других и почему другие не решают вашу проблему. Кроме того, используйте правильное форматирование вместо текущего дампа, если вы хотите, чтобы другие любезно помогли вам бесплатно.
Ответ №1:
Вы используете какую-то древнюю версию Java, которая все еще поддерживает SSLv2ClientHello
, и сервер отказывается ее принимать. Перед подключением следует удалить SSLv2ClientHello
из включенных протоколов.