同事反映,最近 Java 程序异常报错,日志如下:
Caused by: com.coho.cloud.data.exception.BizException: I/O error on GET request for "https://itsvse:88/rest/api": The server selected protocol version TLS10 is not accepted by client preferences [TLS12]; nested exception is javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10 is not accepted by client preferences [TLS12]
网上搜索,发现原因可能是新版的 JDK 不推荐使用旧的 TLSV1.0 的协议,所以默认删除 TLS10 的支持。
登录服务器查看执行的历史命令,发现执行过更新操作,如下图:
查看 JDK 版本,如下:
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
通过如下命令,查看 JDK 的安装地址和加载的内容:
找到 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security 文件,该文件只是个软链接,实际文件地址为:/etc/java-8-openjdk/security/java.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 修改如下:
重新服务器,重新运行 Java 程序。
(完)
|