java - 在 ssl 连接中打开 serversocket 后,我​​可以重新加载 trustmanager

标签 java sockets ssl serversocket sslcontext

假设我已经创建了一个 SSLContext,从 serverSocketFactory 创建了一个 serverSocket,并且我已经开始接受连接。

类似于: SSLContext.getDefault().getServerSocketFactory().createServerSocket(1234).accept();

假设它运行了一段时间,现在我决定修改我的 TrustManager(添加/删除要信任的新证书)。是否可以在不关闭套接字并创建新的 SSLContext 的情况下执行此操作?

最佳答案

您可以使用以下方法。

首先,在创建 SSLContext 对象时保留对它的引用。

SSLContext sslContext=SSLContext.getDefault();
sslContext.getServerSocketFactory().createServerSocket(1234).accept();

然后,当你想加载新的TrustManager时,你可以用相应的TrustManager再次调用init()方法,如下.

TrustManager trustManagers[] = // load trust managers here.
sslContext.init(null,trustManagers,null);

这里,init() 方法有 3 个参数,KeyManager[]TrustManager[]SecureRandom。如果您为它们中的任何一个传递 nullSSLContext 将加载默认的 key 管理器和信任管理器。由于您只想加载信任管理器,因此必须将新的 TrustManager[] 传递给它。

由于您没有更改对 SSLContext 对象的引用,因此这不会中断您的流程或不会影响您现有的 SSLIOSession

关于java - 在 ssl 连接中打开 serversocket 后,我​​可以重新加载 trustmanager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39405180/

相关文章:

java - 背景音乐和共同喜好

java - 线程中的 IllegalMonitorStateException

c++ - boost asio set_verify_callback 泄漏 shared_ptr

c - RTP 数据包的套接字问题

通过 SSL 的 WCF 服务

ios - Windows 服务器上的 Apple 推送通知证书

java - java程序读取MQ Event消息

c - 将服务器套接字绑定(bind)到端口失败 (C)

php - 在没有 SSL 的情况下保护我的帖子请求

java : Batik exception