如何处理 java7 中的异常 "javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure"
how to handle exception "javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure" in java7
我在尝试了很多选项后才发布这个问题。以下是我尝试过的选项。
1.将属性加入{JAVA_HOME}/jre/lib/security/java.securitysecurity.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
从下方下载 jar link 并添加到 {JAVA_HOME}/jre/lib/security http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
2.Adding java -Dhttps.protocols=TLSv1.2,TLSv1.1,TLSv1
3.AddingSystem.setProperty("https.protocols","TLSv1.2,TLSv1.1,SSLv3");连接前。
我仍然遇到这个问题,非常感谢任何帮助。
14:37:28,040 INFO [STDOUT] SALM:login#TID:224#ST:2019-07-12 14:35:03.614, WRITE: TLSv1.2 Handshake, length = 227
14:37:28,311 INFO [STDOUT] SALM:login#TID:224#ST:2019-07-12 14:35:03.614, READ: TLSv1.2 Alert, length = 2
14:37:28,314 INFO [STDOUT] SALM:login#TID:224#ST:2019-07-12 14:35:03.614, RECV TLSv1 ALERT: fatal, handshake_failure
14:37:28,317 INFO [STDOUT] SALM:login#TID:224#ST:2019-07-12 14:35:03.614, called closeSocket()
14:37:28,319 INFO [STDOUT] SALM:login#TID:224#ST:2019-07-12 14:35:03.614, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
14:37:32,023 FATAL [com.de.teamdynamics.webhelper.TeamDynamicHelper] CurrentThreadID=224 TeamDynamicHelper:processTeamDynamicsDataJob:Error - javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
14:37:32,024 FATAL [com.de.base.util.general.WebUtil] CurrentThreadID=224 Exception===> Values ===>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:1979)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1092)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
at com.de.teamdynamics.webhelper.TeamDynamicHelper.pushTeamDynamicsData(TeamDynamicHelper.java:1039)
我多次遇到这个问题,对我来说,它通过更新 US_export_policy.jar 并在 $JAVA_HOME/jre/lib/security/cacerts
中添加 ssl 证书来解决
可以参考这个link:
https://drissamri.be/blog/2017/02/22/trusting-lets-encrypt-java/
这最终对我有用:
SSLContext context = SSLContext.getInstance("TLSv1.2");
context.init(null,null,null);
SSLContext.setDefault(context);
我在尝试了很多选项后才发布这个问题。以下是我尝试过的选项。 1.将属性加入{JAVA_HOME}/jre/lib/security/java.securitysecurity.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
从下方下载 jar link 并添加到 {JAVA_HOME}/jre/lib/security http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
2.Adding java -Dhttps.protocols=TLSv1.2,TLSv1.1,TLSv1
3.AddingSystem.setProperty("https.protocols","TLSv1.2,TLSv1.1,SSLv3");连接前。
我仍然遇到这个问题,非常感谢任何帮助。
14:37:28,040 INFO [STDOUT] SALM:login#TID:224#ST:2019-07-12 14:35:03.614, WRITE: TLSv1.2 Handshake, length = 227
14:37:28,311 INFO [STDOUT] SALM:login#TID:224#ST:2019-07-12 14:35:03.614, READ: TLSv1.2 Alert, length = 2
14:37:28,314 INFO [STDOUT] SALM:login#TID:224#ST:2019-07-12 14:35:03.614, RECV TLSv1 ALERT: fatal, handshake_failure
14:37:28,317 INFO [STDOUT] SALM:login#TID:224#ST:2019-07-12 14:35:03.614, called closeSocket()
14:37:28,319 INFO [STDOUT] SALM:login#TID:224#ST:2019-07-12 14:35:03.614, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
14:37:32,023 FATAL [com.de.teamdynamics.webhelper.TeamDynamicHelper] CurrentThreadID=224 TeamDynamicHelper:processTeamDynamicsDataJob:Error - javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
14:37:32,024 FATAL [com.de.base.util.general.WebUtil] CurrentThreadID=224 Exception===> Values ===>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:1979)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1092)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
at com.de.teamdynamics.webhelper.TeamDynamicHelper.pushTeamDynamicsData(TeamDynamicHelper.java:1039)
我多次遇到这个问题,对我来说,它通过更新 US_export_policy.jar 并在 $JAVA_HOME/jre/lib/security/cacerts
中添加 ssl 证书来解决
可以参考这个link:
https://drissamri.be/blog/2017/02/22/trusting-lets-encrypt-java/
这最终对我有用:
SSLContext context = SSLContext.getInstance("TLSv1.2");
context.init(null,null,null);
SSLContext.setDefault(context);