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