背景
使用JDK8高版本做HTTPS数据推送时报错,数据无法推送,报No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 此错误,使用相关的SSL协议连接也会报此错误。
分析
- 现象:JDK1.8.0_181 版本 不会报错,使用此版本以上如目前公司使用的 JDK1.8.0_291就会报错。
- 原因:高版本JDK禁用了 SSLv3, TLSv1, TLSv1.1 这三个协议,这三个协议存在不安全漏洞,所以高版本JDK直接禁用了。
解决方式
- 代码方式解决,修改httpclient参数
SSLContext sc = SSLContext.getInstance("TLSv1.2");
- 修改JDK配置文件
打开文件所在目录 C:\Program Files\Java\jdk1.8.0_291\jre\lib\security
修改文件:java.security
搜索以下内容:
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这三个选项,保存文件重启项目。
结语
[No appropriate protocol (protocol is disabled or cipher suites are inappropriate)] (https://stackoverflow.com/questions/60654644/no-appropriate-protocol-protocol-is-disabled-or-cipher-suites-are-inappropriate)
本文解决了一个特定的HTTPS数据推送问题,即“No appropriate protocol(protocol is disabled or cipher suites are inappropriate)”错误。该问题出现在使用高版本JDK进行数据推送时。文中详细介绍了错误的原因,并提供了两种解决方案:一是通过代码调整HTTP客户端参数;二是修改JDK配置文件。
1082

被折叠的 条评论
为什么被折叠?



