У меня есть работающее приложение Tomcat на Centos, которое использует сертификат SSL, срок действия которого скоро истечет.
У меня есть создал CSR с помощью keytool:
keytool -certreq -keyalg RSA -alias my_alias -keystore keystore.jks -file nov19.csr
Затем вставил CSR в Gandi, чтобы получить новый сертификат SSL.
Однако теперь Ганди настаивает на том, чтобы я предоставил свежий (то есть отличный от последнего обновления) CSR.
Насколько я понимаю, это означает, что мне нужно создать новую пару закрытого / открытого ключей - это правильно?
Как мне сделать это, не прерывая доступ к приложению?
Да, нужно сгенерировать новую пару ключей.
Для того, чтобы прервать минимальный сервис, поместите пару ключей в новое клавиатурное хранилище, позаботившись об использовании того же псевдонима, что и раньше. После получения нового сертификата просто переключите файлы клавиатуры на диске.
Tomcat не будет сразу же перезагружать файл. Для того, чтобы спровоцировать перезагрузку, необходимо получить доступ к экземпляру Tomcat через JMX. Если вы можете получить доступ к серверу с помощью ssh
и X переадресации, просто запустите:
jconsole
с учетными данными пользователя Tomcat. Вам нужно найти на вкладке MBeans боб, который называется как Catalina:type=ThreadPool,name="jsse-nio-443"
и выполнить операцию reloadSslHostConfigs
.
Если вы не можете использовать jconsole, есть и другие способы доступа к JMX (в Tomcat Manager также есть сервлет JMXProxy).
Старый сертификат будет продолжать работать до истечения срока его действия. Ваш новый сертификат будет иметь некоторые перекрытия по сроку действия с момента его создания до истечения срока действия старого сертификата (если вы создадите его вовремя).
По сути, вы захотите заставить веб-приложение использовать новый сертификат вместо старого в определенный момент времени - предпочтительно в период с меньшим трафиком. Я не эксперт в хранилищах ключей Tomcat и Java, но подозреваю, что вы можете заставить веб-приложение искать сертификат с другим псевдонимом в том же хранилище ключей; заменить псевдоним, указывающий на старый сертификат, на другой, указывающий на новый сертификат в хранилище ключей; или заменить весь хранилище ключей на новый. Скорее всего, вам нужно будет перезагрузить или перезапустить веб-приложение после внесения этого изменения.