Javax.net.ssl.SSLHandshakeException: Получено фатальное предупреждение: handshake_failure
Я отправляю этот вопрос, пробовав много вариантов с двух дней. Ниже приведены параметры, которые я пробовал.
- Отключить проверку сертификата ssl
- Загружая crt из браузера и конвертируя в .jks и импортируя хранилище ключей.
Тем не менее, я получаю эту проблему, любая помощь очень ценится заранее.
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1943)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1059)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1294)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1321)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1305)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:523)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1296)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at com.honeywell.sensibo.api.NewMain.main(NewMain.java:73)
Ответы
Ответ 1
Проблема решена.!!! Ниже приведены решения.
Для Java 6:
Добавьте ниже jars в {JAVA_HOME}/jre/lib/ext.
1. bcprov-ext-jdk15on-154.jar
2. bcprov-jdk15on-154.jar
Добавить свойство в {JAVA_HOME}/jre/lib/security/java.security security.provider.1 = org.bouncycastle.jce.provider.BouncyCastleProvider
Java 7: загрузите jar из ниже ссылки и добавьте в {JAVA_HOME}/jre/lib/security
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
Java 8: загрузите jar из ниже ссылки и добавьте в {JAVA_HOME}/jre/lib/security http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
Проблема заключается в том, что не удалось расшифровать 256 бит шифрования.
Ответ 2
Я получаю похожие ошибки недавно, потому что недавние JDK (и браузеры, стек Linux TLS и т.д.) отказываются общаться с некоторыми серверами в моей корпоративной сети клиентов. Причина этого в том, что некоторые серверы в этой сети по-прежнему имеют сертификаты SHA-1.
Пожалуйста, смотрите:
https://www.entrust.com/understanding-sha-1-vulnerabilities-ssl-longer-secure/
https://blog.qualys.com/ssllabs/2014/09/09/sha1-deprecation-what-you-need-to-know
Если это будет ваш текущий случай (недавняя JDK против устаревшего сертификата), то ваш лучший шаг - обновить вашу сеть до соответствующей технологии подписки.
В случае, если вы должны предоставить временное решение для этого, см. другие ответы, чтобы иметь представление о том, как сделать ваш JDK доверенным или недоверенным определенным алгоритмам подписки:
Как заставить Java-сервер принимать только tls 1.2 и отклонять соединения tls 1.0 и tls 1.1
В любом случае я настаиваю на том, что в случае, если я правильно догадался о вашей проблеме, это не является хорошим решением проблемы и что администратор сети должен рассмотреть возможность удаления этих устаревших сертификатов и получения нового.