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

标签 java ssl sslengine sslcontext ultraesb

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

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

sslContext.init(keyManagers, trustManagers, null);

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

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

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

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

最佳答案

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

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

关于java - 再次调用共享 SSLContext 对象的 init() 时对 SSLEngine 的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275284/

相关文章:

JAVA SSLENGINE : Unsupported record version Unknown-0. 0 尝试使用 SSLEngine 解开字节缓冲区记录时

java - Java 中毕达哥拉斯树的可视化表示

java - Hibernate JPQL - 在 map 关联错误中查询 KEY()

java - 如何确保明确指定java系统属性 `user.timezone`?

http - Jetty 9.3 SSL-ALPN-HTTP2 错误 ERR_EMPTY_RESPONSE 仅使用 HTTPS

单独端口而非 SSL 上的 WCF 元数据

docker - "x509: certificate is not valid for any names"尽管 openssl 显示正确

java - 任务完成后 SSLEngine 握手卡住了

java - 使用特定网络资源打开 URLConnection

java - 没有加密的 sslengine 密码套件