我目前正在将一些服务器软件从 Java 8 迁移到 Java 11。除了当我的服务器在 Java 11(并且只有 11)上运行时拒绝 TLS 连接这一事实之外,一切正常。即,在 Java 10 之前(包括 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)?提前致谢。