javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

时间:2016-07-05 12:51:55

标签: java java-ee ssl-certificate

我在两天内尝试了很多选项之后发布了这个问题。以下是我尝试的选项。

  1. 禁用ssl证书验证
  2. 从浏览器下载crt并转换为.jks并导入密钥库。
  3. 我仍然得到这个问题,提前非常感谢任何帮助。

    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)
    

2 个答案:

答案 0 :(得分:62)

问题已解决。!!!以下是解决方案。

对于Java 6: 将以下jar添加到{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位加密。

答案 1 :(得分:0)

我最近遇到类似的错误,因为最近的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信任或不信任某些编码算法:

How to force java server to accept only tls 1.2 and reject tls 1.0 and tls 1.1 connections

无论如何,我坚持认为,如果我已经正确地猜到了你的问题,这不是一个很好的解决方案,你的网络管理员应该考虑删除这些已弃用的证书并获得一个新的。