RestTemplate请求https异常 DH ServerKeyExchange does not comply to algorithm constraints

RestTemplate请求https异常 DH ServerKeyExchange does not comply to algorithm constraints,第1张

问题描述

RestTemplate请求https,抛出如下异常:

javax.net.ssl.SSLHandshakeException: DH ServerKeyExchange does not comply to algorithm constraints
	at sun.security.ssl.Alert.createSSLException(Alert.java:131)
	at sun.security.ssl.Alert.createSSLException(Alert.java:117)
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:311)
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:258)

原因分析:

通过抛出的堆栈信息定位异常所在代码,如下图:

这里校验的算法约束条件是从Java安全属性文件获取的,如下图:

在系统Java的安全属性文件中,有一个[DH keySize < 2048]的约束条件,意思是公钥长度不能小于2048位,程序生成的是1024位,所以抛出了异常。


解决方案:

方案一:修改系统的java安全属性文件。
这里文件一般都是在JRE目录下面,如:[你的jdk安装目录]/jre/lib/security/java.security
但是有的jdk安装后,会有一个java.config文件,
在linux上这个文件一般在/etc/crypto-policies/back-ends/java.config
这里需要注意的是:在java.config文件中配置的属性将会覆盖java.security文件中的属性,
所以我们只要确保这两个文件的jdk.tls.disabledAlgorithms属性的DH keySize < 1024即可。

方案二:如果你无法修改服务器的这个java配置文件,那可以尝试使用其他的请求方式,比如Webflux的WebClient,他默认的交换算法一般是RSA,不管用什么方法,最终只要满足他这个算法约束条件即可。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1294907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存