У меня есть сервер 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
для этого проверьте его документация для подробностей.