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 首选项的主要内容,如果未能解决你的问题,请参考以下文章

在共享首选项中获取文件大小

如何在首选项摘要中显示 Android 首选项的当前值?

如何在eclipse的配置文件里指定jdk路径

ps中首选项-性能-内存设置中的MB是啥意思?

Eclipse 首选项(Preferences)

什么是命令的首选项和可选项?