1

我有一个反应器模式的实现,我在其中加载(基本上是SSLContext一个TransportListener侦听器在给定端口上侦听 HTTPS 连接。)正在启动。

然后我init()再次调用相同的方法(通过对侦听器方法的JMX调用)

sslContext.init(keyManagers, trustManagers, null);

一旦我在信任库中添加或删除证书。我必须重新加载SSLContext以避免侦听器出现任何停机时间。

所以这是我目前面临的问题。

假设一个请求到达监听器并建立了一个连接。如果我SSLContext在响应返回给客户端之前重新加载对象,这会影响连接SSLEngine对象wrap在发送前加密有效负载的过程吗?

注意:我已经验证了同一个SSLContext对象被传递给所有 SSLEngines。当侦听器启动时,SSLContext 对象被传递给其他几个对象。例如,我有一个连接池,我必须将此 SSLContext 对象传递到该连接池。因此创建一个新的 SSLContext 对象将完全打破现有的连接是连接池。这就是为什么我尝试使用相同的 SSLContext 对象。

4

1 回答 1

0

你需要考虑清楚这一点。如果您已建立连接,则它已经成功地进行了证书交换,因此它不需要新证书,因此不需要新的或重新初始化的SSLContext,直到并包括部分握手,例如重新设置当前会话的密钥,或者请求客户端证书。它根本不应该使用 SSLContext 来完成一次完整的握手。

您需要做的是开始为所有需要新证书的新连接使用新的。 根据定义,您不需要对现有连接做任何事情。SSLContext

于 2016-09-02T01:54:07.673 回答