My WebApp использует Соединитель для двухстороннего 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, который перезагружает сертификаты из хранилища ключей.
Ну, здесь я пропускаю часть регистрации этого SSLContext с tomcat (так что tomcat будет использовать его в соединителе для новых входящих соединений)
Есть много сообщений по этому вопросу, но нет реального решения:
http://www.delphifaq.com/faq/f5003.shtml
http://jcalcote.wordpress.com/tag/truststore
(В этой статье описывается только как воссоздать SSLcontext со стороны клиента (без серверной стороны))
Есть идеи?
Есть еще один связанный вопрос:
Как заставить веб-приложение tomcat перезагрузить хранилище доверия после его обновления
но ответа там недостаточно, поскольку я не хочу создавать новый ClassLoader.
Спасибо.