Назад | Перейти на главную страницу

Почему tomcat не обслуживает правильный сертификат SSL

Я успешно настроил 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 пишется с заглавной буквы.

Оказывается, если псевдонима нет в списке, он просто молча обслуживает первый ключ, который он находит в хранилище ключей.