如何解决JRE 忽略 TLSv1.1 首选项
我在 macOS 11.4 下运行 Oracle 的 JRE 版本 1.8.0_291-b10,但无法使用通过 TLSv1.1 获取 JAR 的本地 JNLP。
使用 javaws -wait ~/Downloads/test.jnlp
运行 JNLP 时,尽管在控制面板中启用了所有协议,但我仍然收到 javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS11 is not accepted by client preferences [TLS13,TLS12,SSL20Hello]
:
我还尝试通过运行 javaws -J-Dhttps.protocols=TLSv1.1 -wait ~/Downloads/test.jnlp
来强制 JVM(以防设置有问题),但这让我javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
。
JRE 似乎无论如何都无法建立 TLSv1.1 连接。有什么办法可以强制吗?更新应用程序是没有问题的,因为这是一个封闭源代码废弃软件,通常需要 IE6 和 Windows XP 才能运行。
解决方法
您可以找到信息 here。它可能有点过时,但包含必要的配置。总结:
- 添加
-Djdk.tls.client.protocols=TLSv1.1
- 使用以下内容创建文件 enableTLS1.1.security(您也可以从 /jre/lib/security/java.security 复制该属性并删除 TLSv1.1)
jdk.tls.disabledAlgorithms=SSLv3,TLSv1,RC4,DES,MD5withRSA,DH keySize < 1024,EC keySize < 224,3DES_EDE_CBC,anon,NULL,include jdk.disabled.namedCurves
-Djava.security.properties=<path to enableTLS1.1.security>
您还可以从 /jre/lib/security/java.security 中的 jdk.tls.disabledAlgorithms 属性中删除 TLSv1.1,而不是 2) 和 3),但这不是一个好的做法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。