【发布时间】:2011-04-28 09:09:20
【问题描述】:
我的 WebApp 使用 2-Way 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"/>
我的问题是,当 Tomcat 服务器正在运行时,我使用新的受信任证书更新密钥库,甚至从中删除受信任的证书,连接器不会注意到这些更改。
到目前为止我已经尝试过:
1) 停止、重新初始化(反射)和启动连接器 - 不起作用。
2) 实现我自己的 SSLContext,从密钥库重新加载证书。 好吧,这里我错过了用 tomcat 注册这个 SSLContext 的部分(以便 tomcat 将在连接器中使用它来进行新的传入连接)
关于这个问题有很多帖子,但没有真正的解决方案:
http://www.delphifaq.com/faq/f5003.shtml
http://jcalcote.wordpress.com/tag/truststore
(本文仅介绍如何从客户端重新创建 SSLcontext(缺少服务器端))
有什么想法吗?
还有一个相关的问题:
How do I force a tomcat web application reload the trust store after I update it
但答案还不够,因为我不想构建新的 ClassLoader。
谢谢。
【问题讨论】:
标签: java security tomcat ssl keystore