JRE 忽略 TLSv1.1 首选项
Posted
技术标签:
【中文标题】JRE 忽略 TLSv1.1 首选项【英文标题】:JRE ignores TLSv1.1 preference 【发布时间】:2021-09-04 02:37:19 【问题描述】:我在 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 才能运行。
【问题讨论】:
“更新应用程序是不可能的,因为这是一个通常需要 IE6 和 Windows XP 才能运行的闭源废弃软件。” - 说真的,老兄:摆脱.你当然可以找到替代品。 每次用的时候都会有点哭。不幸的是,它是一个嵌入式系统。 【参考方案1】:您可以找到信息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>
除了 2) 和 3),您还可以从 /jre/lib/security/java.security 中的 jdk.tls.disabledAlgorithms 属性中删除 TLSv1.1,但这不是一个好习惯
【讨论】:
"... 但这不是好的做法" - 因为 1) TLSv1.1 被认为是不安全的,并且 2) 通过以这种方式更改设置可能会影响使用该 JRE 的 所有 java 程序。 (不仅仅是(?)由过时的 JNLP 服务托管的特定应用程序。)以上是关于JRE 忽略 TLSv1.1 首选项的主要内容,如果未能解决你的问题,请参考以下文章