再次调用共享 SSLContext 对象的 init() 时对 SSLEngine 的影响

Effect to a SSLEngine when calling init() of a shared SSLContext object again

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

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

sslContext.init(keyManagers, trustManagers, null);

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

这就是我目前面临的问题。

假设请求到达侦听器并建立连接。如果我在将响应返回给客户端之前重新加载 SSLContext 对象,这是否会影响连接的 SSLEngine 对象的 wrap 在发送之前加密负载的进程?

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

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

您需要做的是开始对所有需要的 new 连接使用 new SSLContext新证书。根据定义,您无需对现有连接执行任何操作。