我们正在尝试建立 2 路 SSL 连接。收到握手错误。附上日志

Posted

技术标签:

【中文标题】我们正在尝试建立 2 路 SSL 连接。收到握手错误。附上日志【英文标题】:We are trying to establish 2 way SSL connection. getting handshake error. log attached 【发布时间】:2018-08-24 21:18:40 【问题描述】:

我在我的密钥库和信任库中添加了证书,然后尝试使用 spring boot 调用 https 端点。获取以下日志。在 ssl 日志上无法理解太多.. 因此向社区寻求一些帮助。

调试模式下的SSL登录:

[OUT] http-nio-8080-exec-4, WRITE: TLSv1.2 Handshake, length = 80

[OUT] http-nio-8080-exec-4, READ: TLSv1.2 Alert, length = 2

[OUT] http-nio-8080-exec-4, RECV TLSv1.2 ALERT: fatal, handshake_failure

[OUT] %% Invalidated: [Session-1, TLS_RSA_WITH_AES_256_CBC_SHA256]

[OUT] http-nio-8080-exec-4, called closeSocket()
[OUT] http-nio-8080-exec-4, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

【问题讨论】:

端点是否支持 TLS 1.2? 是的,它支持 1.2 【参考方案1】:

上述问题已修复。实际上,通过 spring 设置的 SSL 上下文在握手期间无法发送客户端证书,我发现的原因是我的 Keystore pwd 与私钥密码不同。虽然在通过 spring 加载密钥库期间,我为两者提供了正确的 pwssword,但它仍然无法根据私钥密码提取证书。

在我在密钥生成过程中为密钥库和私钥提供了相同的密码后解决。

【讨论】:

是的。我不知道他们为什么甚至提供私钥密码。它们根本没有得到很好的支持。

以上是关于我们正在尝试建立 2 路 SSL 连接。收到握手错误。附上日志的主要内容,如果未能解决你的问题,请参考以下文章

尝试从 java 客户端建立 SSL 连接时出错

Websphere 9 总是为 SSL 握手发送 ClientHello TLSv1。我如何强制使用 TLSv1.2

如何修复“SSL 握手失败”

无法建立 SSL 连接,请参阅内部异常

android中的SSL握手失败

为啥 SSL 握手会给出“无法生成 DH 密钥对”异常?