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

В любом случае я настаиваю на том, что в случае, если я правильно догадался о вашей проблеме, это не является хорошим решением проблемы и что администратор сети должен рассмотреть возможность удаления этих устаревших сертификатов и получения нового.