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

问题描述

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,不管用什么方法,最终只要满足他这个算法约束条件即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值