【发布时间】:2016-07-28 01:30:10
【问题描述】:
我有一位客户更换了我们产品组件的密钥库和信任库。更换后组件无法相互通信(2 路 SSL)。
在 SSL 日志中我看到:http-nio-8100-exec-2, fatal error: 42: null cert chain
javax.net.ssl.SSLHandshakeException: null cert chain
%% Invalidated: [Session-6, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]
http-nio-8100-exec-2, SEND TLSv1.2 ALERT: fatal, description = bad_certificate
http-nio-8100-exec-2, WRITE: TLSv1.2 Alert, length = 2
http-nio-8100-exec-2, fatal: engine already closed. Rethrowing javax.net.ssl.SSLHandshakeException: null cert chain
他们在双方都配置了相同的密钥库和信任库文件。
我已经打开了他们的密钥库和信任库,它们是这样构建的:
keystore
entry1 - 服务器
证书[1] MD5: X
证书[2] MD5: Y
证书[3] MD5: Z
信任库
entry1 - 根
证书[1] MD5: Z
entry2 - 中级
证书[1] MD5:是的
在我看来,信任库中缺少密钥库(使用 MD5 X)中的 cert[1] 这一事实是有问题的。
我说的对吗?
您是否发现他们的密钥库和信任库的构建方式有任何其他问题?
【问题讨论】:
-
您的组件是双向通信还是客户端-服务器架构?是 1-way SSL 还是 2-way SSL?
-
两种方式。我也会更新问题。
-
如果它是 2-way SSL,你应该在栅栏的两边都有一个密钥库和信任库,你没有在你的问题中指定。你也不清楚它失败的方式。您需要在帖子中更加具体。
-
谢谢。我已经添加到问题中:他们在双方都配置了相同的密钥库和信任库文件。它以哪种方式失败仍然重要吗?
-
在这种情况下方向应该无关紧要。密钥库中的 cert[1] 是自签名证书吗?
标签: java ssl keystore truststore