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

Tomcat8 не обнаруживает обновленный сертификат Letsencrypt (но это делает Apache)

У меня есть сервер Ubuntu 17.10 с Apache 2.4.27 и Tomcat 8.5.21, оба работают через HTTPS благодаря сертификату Letsencrypt. Работает нормально 3 месяца и автоматическое продление (по умолчанию cron) работал. Но после исходной даты истечения срока мой Apache все еще работает нормально с обновленным сертификатом, но Tomcat8 все еще использует просроченный сертификат, поэтому я получаю Небезопасное соединение предупреждение в моем браузере.

Я попытался force-reload в моей службе Tomcat8 и даже безуспешно перезагружал весь сервер.

Это моя конфигурация Tomcat8 для SSL на server.xml:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
    SSLEnabled="true" scheme="https" secure="true" clientAuth="false"
    sslProtocol="TLSv1.2" keyAlias="tomcat"
    keystoreType="JKS"
    keystoreFile="/etc/letsencrypt/live/example.com/MyDSKeyStore.jks"
    keystorePass="PASSWORD" />

Если я попробую:

openssl s_client -connect 127.0.0.1:443 -showcerts

Я вижу свой Apache, эффективно использующий обновленный сертификат, но для Tomcat8 через порт 8443:

openssl s_client -connect 127.0.0.1:8443 -showcerts 

[...] проверьте ошибку: num = 10: срок действия сертификата истек [...]

Есть идеи, как заставить Tomcat использовать обновленный сертификат?

Обновить:

Благодаря комментариям я увидел, что хранилище ключей Tomcat на /etc/letsencrypt/live/example.com/MyDSKeyStore.jks не тронуло обновление. Итак, я предполагаю, что настоящая проблема здесь в том, как автоматически обновлять этот файл при обновлении моего сертификата.

Стандартный Let's Encrypt certbot не поддерживает формат хранилища ключей JKS, поэтому ваш /etc/letsencrypt/live/example.com/MyDSKeyStore.jks файл был создан вручную и требует обновления после каждого обновления. Вы можете попробовать использовать certbot renew --deploy-hook для этого проверьте его документация для подробностей.