Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在ssl连接中打开serversocket后是否可以重新加载trustmanager_Java_Sockets_Ssl_Serversocket_Sslcontext - Fatal编程技术网

Java 在ssl连接中打开serversocket后是否可以重新加载trustmanager

Java 在ssl连接中打开serversocket后是否可以重新加载trustmanager,java,sockets,ssl,serversocket,sslcontext,Java,Sockets,Ssl,Serversocket,Sslcontext,假设我已经创建了一个SSLContext,从serverSocketFactory创建了一个serverSocket,并且我已经开始接受连接 比如: SSLContext.getDefault().getServerSocketFactory().createServerSocket(1234.accept() 假设它运行了一段时间,现在我决定修改我的TrustManager(向trust添加/删除新证书)。是否可以在不关闭套接字和创建新SSLContext的情况下执行此操作?您可以使用以下方法

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

比如:
SSLContext.getDefault().getServerSocketFactory().createServerSocket(1234.accept()


假设它运行了一段时间,现在我决定修改我的TrustManager(向trust添加/删除新证书)。是否可以在不关闭套接字和创建新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
。如果为其中任何一个传递
null
,则
SSLContext
将加载默认密钥管理器和信任管理器。由于您只想加载信任管理器,因此必须将新的
TrustManager[]
传递给它

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