У меня есть Java-программа, которая подключается к веб-серверу с использованием SSL/TLS и отправляет различные HTTP-запросы по этому соединению. Сервер является localhost и использует самозаверяющий сертификат, но мой код использует пользовательские TrustManager и игнорирует недопустимые сертификаты. Он отлично работал до сих пор.
Единственное отличие на сервере заключается в том, что он использовался для запуска jboss 6 и теперь запускается jboss 7. Я не уверен, что это проблема конфигурации или проблема с моим кодом, но я получаю те же ошибки, если я пытаюсь подключиться с помощью других Java-программ, таких как WebScarab или ZAP.
В любом случае, есть ли что-нибудь, что я могу сделать для моего кода, чтобы обойти эту проблему? Вот полная ошибка:
Received fatal alert: handshake_failure
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
Вот отладочные сообщения перед сбоем:
main, WRITE: TLSv1 Handshake, length = 75
main, WRITE: SSLv2 client hello message, length = 101
main, READ: TLSv1 Alert, length = 2
main, RECV TLSv1 ALERT: fatal, handshake_failure