admin管理员组

文章数量:1618696

WebService系列之SSL异常handshake failure处理方法

最近在使用axis调用一个https的接口,调用时候一直报异常:

javax.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

网上说法有设置TLS:

System.setProperty("https.protocols", "TLSv1.2,TLSv1.1,TLSv1.0,SSLv3");

不过抛出异常,需要注意,如果是jdk8就不需要设置TLSv1.0,jdk6有些版本不能设置TLSv1.1

不同版本jdk对TLS验证是有差别的:oracle官网博客Diagnosing TLS, SSL, and HTTPS列出了差别


然而这种设置TLS协议方法并不能处理问题,然后在https://stackoverflow/,找到方法:

意思是需要下载oracle官网的jar:

  • jdk6:下载bcprov-ext-jdk15on-154.jar、bcprov-jdk15on-154.jar这两个jar
    下载链接:bcprov-ext-jdk15on-154.jar、bcprov-jdk15on-154.jar

下载之后,将两个jar放在$JAVA_HOME/jre/lib/ext,找到找到security.provider.9,然后在这句话下面加上:

security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
  • jdk7:下载javase-jce7.jar
    下载链接:http://www.oracle/technetwork/java/javase/downloads/jce-7-download-432124.html
    下载之后将jar丢在{JAVA_HOME}/jre/lib/security
  • jdk8:下载javase-jce8.jar
    https://www.oracle/java/technologies/javase-jce8-downloads.html

    下载之后将jar丢在{JAVA_HOME}/jre/lib/security

参考资料:
解决 JAVAX.NET.SSL.SSLEXCEPTION: JAVA.LANG.RUNTIMEEXCEPTION: COULD NOT GENERATE DH KEYPAIR
https://wwwblogs/yinliang/p/9929595.html

本文标签: 异常方法系列之webserviceSSL