Art*_*tch 5 java security ssl tomcat keystore
我的 Web 应用程序使用 2 向 SSL 连接器(也称为“客户端身份验证”):
<Connector port="8084" SSLEnabled="true" maxThreads="10" minSpareThreads="3" maxSpareThreads="5"
enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true"
clientAuth="true" truststoreFile="conf/keystore.kst" truststoreType="JCEKS" sslProtocol="TLS" URIEncoding="UTF-8"
keystoreFile="conf/keystore.kst" keystoreType="JCEKS" keyAlias="myAlias"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA"/>
Run Code Online (Sandbox Code Playgroud)
我的问题是,当 Tomcat 服务器正在运行并且我使用新的受信任证书更新密钥库,甚至从中删除受信任证书时,连接器不会注意到这些更改。
到目前为止我尝试过的:
1)停止、重新初始化(反射)和启动连接器 - 不起作用。
2) 实现我自己的 SSLContext,从密钥库重新加载证书。好吧,这里我遗漏了向 tomcat 注册此 SSLContext 的部分(以便 tomcat 将在连接器中使用它来进行新的传入连接)
关于这个问题有很多帖子,但没有真正的解决方案:
http://www.delphifaq.com/faq/f5003.shtml
http://jcalcote.wordpress.com/tag/truststore
(本文仅介绍如何从客户端重新创建 SSLcontext(缺少服务器端))
有任何想法吗?
还有另一个相关问题:
如何强制 Tomcat Web 应用程序在更新后重新加载信任存储
但答案还不够,因为我不想构建新的类加载器。
谢谢。
如果您的连接器将bindOnInit属性设置为false(从 Tomcat 6.x 开始存在),则:
控制何时绑定连接器使用的套接字。默认情况下,当连接器启动时它被绑定,当连接器被销毁时它被解除绑定。如果设置为 false,则套接字将在连接器启动时绑定,并在连接器停止时解除绑定。
来自org.apache.tomcat.util.net.AbstractEndpoint Tomcat 8.0.29的代码片段:
public final void start() throws Exception {
if (bindState == BindState.UNBOUND) {
bind();
bindState = BindState.BOUND_ON_START;
}
startInternal();
}
public final void stop() throws Exception {
stopInternal();
if (bindState == BindState.BOUND_ON_START) {
unbind();
bindState = BindState.UNBOUND;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以在更新密钥和信任存储后通过 JMX 停止和启动连接器。
归档时间: |
|
查看次数: |
11049 次 |
最近记录: |