在做项目的时候遇到了这个异常,尝试了很久才解决了问题,所以在这里做一个整理,方便遇到同样问题的开发人员进行解决
导致问题出现的原因: JDK版本升级导致协议算法不一致
这里使用了三个版本的JDK进行试验
JDK1.8: 通过java.security文件修改JDK的安全协议。
JDK1.7:不会出现此问题。
JDK1.6:要添加两个补丁包,并且从旧算法列表中删除3DES_EDE_CBC。
友情提示:项目之前使用的是哪个版本的JDK,照旧就行了
目录
JDK1.8解决方案详情:
1.先找到java.security文件, 文件位置:JDK主目录\jre\lib\security\java.security(没有此文件就重新下载,或者从别人那拉一个试试)
注意:环境配置里用的哪个jre,就改哪个jre下的\java.security文件
2.找到disabledAlgorithms属性(记事本用ctrl+f进行搜索)
将disabledAlgorithms的值改为:
SSLv3, 3DES_EDE_CBC, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, anon, NULL, \
include jdk.disabled.namedCurves
修改完后:
然后保存好就没问题了
JDK1.6解决方案详情:
1先下载两个补丁包
这里提供了下载地址:
链接:https://pan.baidu.com/s/1hs5cQAzmrANX6r1QUbxqGg
提取码:4455
(失效了滴我就好)
2把两个补丁包放到JDK安装目录的jre\lib\ext下,例如我的是D:\jdk1.6\jre\lib\ext
3修改JDK安装目录\jre\lib\security下的java.security文件
找到security.provider.1=sun.security.provider.Sun换成security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
(建议复制过去用idea的ctrl+r进行搜索)
4最后启用旧时算法,修改JDK目录下的\jre\lib\security下的java.security文件(还是刚刚那个文件)
找到jdk.tls.disabledAlgorithms=,把3DES_EDE_CBC去掉
最后再重新导入项目,选择JDK1.6就没问题了