【问题标题】:JBoss reload certificate truststore without restartJBoss 无需重新启动即可重新加载证书信任库
【发布时间】:2011-05-18 21:23:08
【问题描述】:

有没有办法在 JBoss 4.2 中“重新加载”证书信任库而无需重新启动?

我正在尝试让 EJB 使用 ssl 调用远程服务器上的 Web 服务,并且看到与 SSLHandshakeException 类似的问题,如下文所示。我们正在尝试执行以下操作,涉及三台机器,A 是 JBoss 服务器,充当服务器 B 和 C 的 Web 服务客户端。

1) 在 A 上,用户输入 B 的主机名。A 上的机器获取 B 的自签名证书并将其安装在信任库中(通过外部 shell 脚本)。

2) 与 B 建立 SSL 套接字连接,在该点看来证书存储在第一次尝试时已加载。连接成功,一切正常。

3) 再次在 A 上,用户执行与 2 相同的操作,shell 脚本获取 C 的证书并将其安装到 trusstore。但是,在与 C 的连接上,似乎(通过启用 javax.net.debug=ssl)信任库没有“重新加载”,它没有找到 C 的证书,我们得到 SSLHandshakeException。

重新启动 JBoss 后,“更新的”信任库被加载,与 B 和 C 的连接都正常工作。

希望在不重新启动 JBoss 的情况下执行此操作,并收集上述方案不正确。如果有人可以向我指出动态更新信任库的正确方法的文档,我们将不胜感激。

Problem calling web service from within JBOSS EJB Service

【问题讨论】:

    标签: jakarta-ee jboss self-signed truststore sslhandshakeexception


    【解决方案1】:

    【讨论】:

    • 是的,该解决方案可以工作 - 尤其是方法 reloadKeyAndTrustStore()
    【解决方案2】:

    从安全角度来看,让一个 EJB 将自签名证书(在用户交互时)添加到 Jboss 范围内使用的信任库中并不是一个好主意。

    更简洁的解决方案是让您的 Web 服务客户端使用自定义 X509TrustManager 实现或自定义 SSLSocketFactory。在这两种情况下,您都可以自行决定信任哪个证书。这将允许您管理自己的信任库,该信任库仅对该 EJB 和相应的 WS 调用有效。

    另请参阅: http://www.howardism.org/Technical/Java/SelfSignedCerts.html

    【讨论】:

      最近更新 更多