java - 如何在 Websphere 8.5.5.9 中为 mSSL 设置客户端证书?

标签 java ssl websphere

我有一个当前部署在 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/

相关文章:

wcf - 具有相互 SSL 的自托管 WCF 服务(在服务和客户端之间)因 403 Forbidden 而失败

java - `AnnotationConfigNonEmbeddedWebApplicationContext` 还没有刷新

java - 检查日期在Java中的两个日期之间

java - 通过将元素设置为 null 来释放数组中的空间?

java - Android 字符串中的 Textview 正则表达式?

java - 读取字段中包含逗号的 csv 文件时出现问题

spring-mvc - 如何将 Spring 配置为忽略 SSL 证书有效性

ios - 此服务器的证书对于 swift 3 上的自签名证书无效

security - Websphere 中 Java 2 安全性、J2EE 安全性和 JAAS J2C 身份验证之间的区别

java - 反序列化 JMS 消息中的对象