Я успешно настроил tomcat с SSL и использовал самозаверяющий сертификат. Недавно возникла проблема, из-за которой было непросто просто указать клиенту «Принять / доверять» нашему сертификату. В итоге мы купили сертификат Verisigin для этого сервера.
Я добавил новый сертификат к сертификату в хранилище ключей. Я обновил кота server.xml файл, чтобы использовать псевдоним для нового сертификата. Я перезапустил Tomcat и сервер. Каждый раз, когда я подключаюсь к серверу, я получаю старый сертификат.
Окружающая среда:
Коннектор из server.xml:
<Connector port="443" maxThreads="150"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="keystore.keys" keyalias="webapps2013"
keystorePass="Redacted"
clientAuth="false" sslProtocol="TLS" protocol="HTTP/1.1" />
Я даже попытался изменить хранилище ключей, переместив старый сертификат на другой псевдоним и добавив новый сертификат с тем же именем, что и старый псевдоним.
Я пробовал это в нескольких браузерах и на рабочих станциях. (Очистил и мой кеш.)
Итак, что мне нужно сделать, чтобы кот взял и вручил мой новый сертификат?
ОБНОВИТЬ:
После предложения в одном из комментариев очистить кеш-память о котах.
Я остановил tomcat, удалил $ {CATALINA_HOME} / work и перезапустил tomcat.
Он все еще обслуживает старый сертификат.
ОБНОВЛЕНИЕ 2:
Я просмотрел jakarta_service_date.log catalina.date.log manager.date.log stdout.date.log и stderr.date.log Я не вижу ошибок сертификата. Хотя я вижу странную ошибку о сериализации сеанса.
Dec 11, 2013 10:46:27 AM org.apache.catalina.session.StandardManager doUnload
SEVERE: IOException while saving persisted sessions: java.io.FileNotFoundException:
C:\Tomcat6.0\work\Catalina\localhost\RCSLIBRRunner\SESSIONS.ser (Access is denied)
java.io.FileNotFoundException: C:\Tomcat6.0\work\Catalina\localhost\RCSLIBRRunner\SESSIONS.ser (Access is denied)
за которым следует трассировка стека. Другие приложения выдавали такое же исключение. Этого не произошло уже пару часов, я думаю, это был побочный эффект от очистки кеша котов.
Вот еще одна ошибка сериализации:
Dec 11, 2013 10:46:27 AM org.apache.catalina.session.StandardManager stop
SEVERE: Exception unloading sessions to persistent storage
java.io.FileNotFoundException: C:\Tomcat6.0\work\Catalina\localhost\RCSLIBRRunner\SESSIONS.ser (Access is denied)
У нас были проблемы с protocol="HTTP/1.1"
, с ошибками в наших журналах. Наши ошибки были
Указан файл сертификата или неверный формат файла
На основе некоторых "исследование google", мы использовали это для protocol
вместо:
protocol="org.apache.coyote.http11.Http11NioProtocol"
Наши Connector
как следует:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
keystoreFile="/path/to/keystore"
keystorePass="******"
clientAuth="false"
sslProtocol="TLS" />
оказывается, у меня была опечатка в моем Connector
Так должно быть:
<Connector port="443" maxThreads="150"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="keystore.keys" keyAlias="webapps2013"
keystorePass="Redacted"
clientAuth="false" sslProtocol="TLS" protocol="HTTP/1.1" />
Примечание: первый в keyAlias
пишется с заглавной буквы.
Оказывается, если псевдонима нет в списке, он просто молча обслуживает первый ключ, который он находит в хранилище ключей.