Java 11 + Chrome / Firefox = TLS解密错误

时间:2018-10-16 07:52:21

标签: java ssl java-11

我目前正在将某些服务器软件从Java 8迁移到Java11。一切正常,除了当我的服务器在Java 11(仅11)上运行时,拒绝TLS连接的事实。也就是说,当在Java 10或更高版本上运行时,一切正常。一旦切换到Java 11(当然,它们之间绝对没有代码更改),我就会收到TLS解密错误。否则,当我禁用SSL / TLS或使用IE / Edge(通过TLS)连接到服务器时,我的应用程序可以正常工作。使用Chrome 70或Firefox 62时,我分别得到ERR_SSL_PROTOCOL_ERRORSEC_ERROR_BAD_SIGNATURE

我试图使用WireShark对此进行分析(请参阅我的dump)。我的结论是Java 11和Chrome / Firefox协商了一个错误的密码套件(rsa_pss_rsae_sha256),该密码套件在某种程度上不适用于Java11。Java8和IE / Edge似乎协商了一个不同的密码套件(rsa_pkcs1_sha256),该密码套件有效。 / p>

有人知道如何解决此问题或至少暂时解决此问题(当然,除了禁用SSL / TLS或使用IE / Edge之外)?预先感谢。

1 个答案:

答案 0 :(得分:2)

这很可能是与TLS 1.3中新PSS算法的兼容性失败。对于引入PSS here的背后原因,您可以阅读很好的解释。

在修正此问题之前,您可以通过编辑lib/security/java.security并将TLSv1.3添加到jdk.tls.disabledAlgorithms属性来阻止服务器协商TLS 1.3。