与第三方系统对接 jdk1.6 Could not generate DH keypair处理方法

332 阅读1分钟

今天在与某客户做系统对接时,调用对方接口,提示错误“ Could not generate DH keypair”,

在网上查了下,说是Java 早期版本是只支持 1024 位的 DH Parmaeter的。

通过https://www.ssllabs.com/ssltest/analyze.html?d=访问地址,发现对方服务器DHE最低是支持2048,目前项目用到的JDK

版本DHE算法不支持,所以会出现上述错误。

有两个解决方法

一、升级自己的jre(本地开发系统升级JDK)到JAVA8 。

不过更换版本不是最好的解决方案,升级JDK版本可能会对项目有影响,只能做为一个备选方案。

二、修改jre(本地开发系统升级JDK) 配置    

bcprov-ext-jdk15on-1.59.jar

bcprov-jdk15on-1.59.jar

然后下载完毕之后就需要将这两个jar包放到  $JAVA_HOME/jre/lib/ext 下。

接下来修改文件java.security,这个文件的位置在$JAVA_HOME/jre/lib/security/ 下,

打开此文件,找到security.provider.8 (具体看自己用的jre,如果最后一个是security.provider.9,下面依次加1),在这句话下面加上:

security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider

加上了之后,重启应用就可以运行了。

附上面两个jar的maven坐标

<dependency>
	    <groupId>org.bouncycastle</groupId>
	    <artifactId>bcprov-jdk15on</artifactId>
	    <version>1.59</version>
	</dependency>
	 
	<dependency>
	    <groupId>org.bouncycastle</groupId>
	    <artifactId>bcprov-ext-jdk15on</artifactId>
	    <version>1.59</version>
	</dependency>

 

 本文已参与「新人创作礼」活动,一起开启掘金创作之路。