【发布时间】:2021-05-14 00:15:12
【问题描述】:
这是我的情况。我有两个主机 HostA 和 HostB。我们在 HostA 上触发工作流。 HostA 将此工作流程传递给 HostB 以实际处理它。现在一个工作流由 5 个作业组成。作业完成后,HostB 必须通知 HostA 工作流中的一项作业已完成。为了传递此信息,HostB 充当客户端并验证 HostA 证书,并且出于所有真正原因在验证时抛出异常。这会导致 SSLHandshake 失败。因此,HostA 中的工作流状态将永远挂起,因为 HostB 无法到达 HostA。 HostB 有一个基于 Java 的实现。我们创建我们的 REST 客户端 (apache.cxf) 并向其添加 TLS 验证器。我们对此验证器有自己的自定义实现。
我想知道的是有什么方法或设计可以解决这个问题。我不希望在证书验证失败时发生通信,但我确实希望通知服务器(在本例中为 HostA)发生 SSLHandshake 失败。
到目前为止,我能想到的唯一解决方案是在尝试到达 HostA 的方法中捕获异常,检查它是否是 SSLHandshakeException,然后将错误传播到带有未验证的 rest 客户端的服务器证书。
如果还有其他更好的解决方案,我想知道。 感谢您花时间浏览内容。
【问题讨论】:
-
不,幸运的是,您无法从客户端更新服务器配置。
标签: java cxf tls1.2 sslhandshakeexception