我目前正在将一些服务器软件从Java 8迁移到Java 11.除了当我的服务器在Java 11(并且只有11)上运行时拒绝TLS连接这一事实以外,一切正常.即,当运行到Java 10时,一切正常.一旦切换到Java 11(当然绝对没有代码更改)我得到TLS解密错误.我的应用程序工作正常,否则我禁用SSL/TLS或当我使用IE/Edge连接到我的服务器(通过TLS).使用Chrome 70或Firefox 62时,我分别得到ERR_SSL_PROTOCOL_ERROR
或SEC_ERROR_BAD_SIGNATURE
.
我尝试使用WireShark进行分析(请参阅我的转储).我的结论是Java 11和Chrome/Firefox协商了一个糟糕的密码套件(rsa_pss_rsae_sha256),它在某种程度上不适用于Java 11. Java 8和IE/Edge似乎协商了一个不同的密码套件(rsa_pkcs1_sha256),这是有效的.
有人知道如何解决这个问题或者至少解决这个问题(当然除了禁用SSL/TLS或使用IE/Edge之外)?提前致谢.
这可能是 TLS 1.3 中新 PSS 算法的兼容性故障。您可以在此处阅读有关引入 PSS 背后推理的详细解释。
lib/security/java.security
在修复此问题之前,您可以通过编辑TLSv1.3 并将其添加到属性来阻止服务器协商 TLS 1.3 jdk.tls.disabledAlgorithms
。
归档时间: |
|
查看次数: |
724 次 |
最近记录: |