带有Java 1.8.0_271-b09客户端的ActiveMQ SSLException
我正在使用SSL授权(通过信任存储)运行ActiveMQ服务器 客户端是用Spring Boot和Camel编写的。每个客户端都有各自的证书 当客户端的Java版本更新为版本带有Java 1.8.0_271-b09客户端的ActiveMQ SSLException,java,ssl,activemq,Java,Ssl,Activemq,我正在使用SSL授权(通过信任存储)运行ActiveMQ服务器 客户端是用Spring Boot和Camel编写的。每个客户端都有各自的证书 当客户端的Java版本更新为版本1.8_271时,SSL连接突然失败。这可以在ActiveMQ日志中找到: javax.net.ssl.SSLException:收到致命警报:意外的\u消息 降级至1.8.0_261后,一切恢复正常 这就是它变得非常奇怪的地方:我的ActiveMQ信任库目前包含232个证书。当我删除其中两个(不管是哪一个)时,与1.8_2
1.8_271
时,SSL连接突然失败。这可以在ActiveMQ日志中找到:
javax.net.ssl.SSLException:收到致命警报:意外的\u消息
降级至1.8.0_261
后,一切恢复正常
这就是它变得非常奇怪的地方:我的ActiveMQ信任库目前包含232个证书。当我删除其中两个(不管是哪一个)时,与1.8_271
客户端的连接将再次工作
这对我来说真的毫无意义。服务器信任库中的项目数与客户端的Java版本有什么关系
一些更新:
- 我正在用计算机进行测试
- 将密钥存储类型从本机JKS更改为PKCS#12并没有什么区别
- 在服务器端使用Java
的行为相同,但显示不同的错误消息: java.net.SocketException:连接或出站已关闭1.8_271
添加了一个新的系统属性jdk.tls.maxHandshakeMessageSize,以设置tls/DTLS握手中握手消息允许的最大大小。系统属性的默认值为32768(32KB)
如果服务器请求客户端身份验证,1.3以下的JSSE(edit)会发送一条CertificateRequest消息,指定从信任库中的证书派生的可接受CA名称,因此信任库中的证书数量会影响此消息的大小,并可能使其超出限制,在这种情况下,客户端会拒绝此消息(虽然我不确定我是否喜欢在这种情况下使用意外的_消息)。非常感谢。我刚刚得出了相同的结论(消息太大,因为握手中有可接受的客户端证书CA名称);)我想知道是否有可能禁用此功能。在TLS 1.3中,此信息似乎不再交换。它是一个系统属性;根据您的应用程序和环境,通常有多种方法设置系统属性。1.3协议仍然允许这个列表,但您是对的,JSSE不再发送它;我不知道为什么。如果我有时间,我将下载源代码并查看。