Java 11 + Chrome/Firefox = TLS 解密错误
Java 11 + Chrome/Firefox = TLS decrypt error
我目前正在将一些服务器软件从 Java 8 迁移到 Java 11。一切正常,除了当我的服务器在 Java 上运行时 TLS 连接被拒绝11 个(而且只有 11 个)。即,当 运行 达到并包括 Java 10 时,一切正常。一旦我切换到 Java 11(当然,两者之间绝对没有代码更改),我得到了 TLS 解密错误。当我禁用 SSL/TLS 或当我使用 IE/Edge 连接到我的服务器(通过 TLS)时,我的应用程序工作正常。使用 Chrome 70 或 Firefox 62 时,我分别得到 ERR_SSL_PROTOCOL_ERROR
或 SEC_ERROR_BAD_SIGNATURE
。
我尝试使用 WireShark 对此进行分析(参见我的 dump)。我的结IE/Edge 似乎协商了一个不同的密码套件 (rsa_pkcs1_sha256),这是可行的。
有人知道如何解决这个问题或至少暂时解决这个问题(当然除了禁用 SSL/TLS 或使用 IE/Edge 之外)吗?提前致谢。
这可能是与 TLS 1.3 中新的 PSS 算法的兼容性问题。您可以阅读 PSS 引入背后原因的很好解释 here。
在修复之前,您可以通过编辑 lib/security/java.security
并将 TLSv1.3 添加到 jdk.tls.disabledAlgorithms
属性.
来阻止您的服务器协商 TLS 1.3
我目前正在将一些服务器软件从 Java 8 迁移到 Java 11。一切正常,除了当我的服务器在 Java 上运行时 TLS 连接被拒绝11 个(而且只有 11 个)。即,当 运行 达到并包括 Java 10 时,一切正常。一旦我切换到 Java 11(当然,两者之间绝对没有代码更改),我得到了 TLS 解密错误。当我禁用 SSL/TLS 或当我使用 IE/Edge 连接到我的服务器(通过 TLS)时,我的应用程序工作正常。使用 Chrome 70 或 Firefox 62 时,我分别得到 ERR_SSL_PROTOCOL_ERROR
或 SEC_ERROR_BAD_SIGNATURE
。
我尝试使用 WireShark 对此进行分析(参见我的 dump)。我的结IE/Edge 似乎协商了一个不同的密码套件 (rsa_pkcs1_sha256),这是可行的。
有人知道如何解决这个问题或至少暂时解决这个问题(当然除了禁用 SSL/TLS 或使用 IE/Edge 之外)吗?提前致谢。
这可能是与 TLS 1.3 中新的 PSS 算法的兼容性问题。您可以阅读 PSS 引入背后原因的很好解释 here。
在修复之前,您可以通过编辑 lib/security/java.security
并将 TLSv1.3 添加到 jdk.tls.disabledAlgorithms
属性.