我有一个当前部署在 WAS 8.5.5.9 中的应用程序。此应用程序通过网络服务连接到另一台服务器,另一台服务器的主机要求我使用 TLS 1.2 并通过相互 SSL 连接进行连接。
我已经在我的 WAS 的信任库中成功导入了(其他)服务器的主机证书,但由于这是 mSSL 而不是常规的单向 SSL,我还需要设置要发送回其他服务器的客户端证书验证连接。
我该怎么做?我似乎无法在 WAS 管理控制台中找到任何指定要发送到 mSSL 远程服务器的客户端证书的选项。
需要考虑的几点:
- 我已经在 WAS 的 SSL 配置中选择了 TLSv1.2,它似乎可以正常工作
- 远程主机的所有者根据我们在 IKEYMAN 中创建的 CSR 向我提供了客户端证书。
- 我已尝试在 WAS 信任和 key 存储中导入客户端证书,但当我尝试处理交易时,我仍然收到 handshake_failure 异常。
- 远程服务器端的 TCP 转储表明服务器在接收客户端证书时长度为 0
- 我这边的日志表明初始握手成功。 ClientHello 和 ServerHello 消息推送。但在最后我收到了这条消息(尽管它并没有说明太多):
[11/28/16 20:57:15:836 CST] 000000e9 SystemOut O [Raw read]: length = 5 [11/28/16 20:57:15:836 CST] 000000e9 SystemOut O 0000: 15 03 03 00 02 ..... [11/28/16 20:57:15:836 CST] 000000e9 SystemOut O [Raw read]: length = 2 [11/28/16 20:57:15:836 CST] 000000e9 SystemOut O 0000: 02 28 .. [11/28/16 20:57:15:836 CST] 000000e9 SystemOut O Thread-142, READ: TLSv1.2 Alert, length = 2 [11/28/16 20:57:15:836 CST] 000000e9 SystemOut O Thread-142, RECV TLSv1.2 ALERT: fatal, handshake_failure
最佳答案
您可以使用“动态出站端点”功能将证书与到目标服务器的连接相关联。要设置动态出站端点,请参阅:Associating a Secure Sockets Layer configuration dynamically with an outbound protocol and remote secure endpoint .
连接信息的格式为*,hostname,port
。选择现有的 SSL 配置 (CellDefaultSSLSettings) 后,单击“获取证书别名”按钮。然后从下拉列表中选择您的客户端证书。
这应该允许您正确执行相互身份验证。请注意,您的客户端证书还必须存在于目标服务器的信任库中。
关于java - 如何在 Websphere 8.5.5.9 中为 mSSL 设置客户端证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40848774/