【开发】使用HttpUtil类报javax.net.ssl.SSLHandshakeException异常

在使用HttpUtil类时,针对某一个接口报错出现异常

HttpGetInfo result = HttpUtil.getInfo(token, Url);

但是这个getInfoUrl在postman上调用是成功的

后来查找后发现问题是:

在Java8及高版本以上的版本在调用ssl时会出现javax.net.ssl.SSLHandshakeException: No appropriate protocol的异常

(博客地址:https://blog.csdn.net/wuyu7448/article/details/121131352)

修改jre/lib/security/java.security中的disabledAlgorithms

查看disabledAlgorithms(禁用算法)发现:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

删除SSLv3, TLSv1, TLSv1.1,然后重启应用即可

问AI发现:
在这里插入图片描述
所以是不是可以理解成,jdk1.8禁用了这些版本协议,但是HttpUtils又要用到,所以冲突了?

对应该是这样的,再看看源码

HttpUtil.getInf ----> httpGetByType

在httpGetByType类中有一个实例 sslcontext

SSLContext sslcontext = createIgnoreVerifySSL();

进入,发现主要创建了跳过的解密算法

SSLContext sc = SSLContext.getInstance("SSLv3");

所以,结论应该是HttpUtil使用时会用到TLS算法(TLSv1,TLSv1.1),但是jdk8里面禁用了,而用postman调试时,我点了跳过SSL认证从而没有出现此问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值