Я получил кучу SSL-сертификатов, которые мне нужно установить на серверы tomcat, и обычно это достаточно просто. Однако эти сертификаты имеют свои закрытые ключи, созданные в другом месте и переданные вместе с закрытыми ключами и всеми сертификатами SSL.
Keytool не позволяет мне импортировать закрытые ключи напрямую, поэтому я не могу следовать стандартному процессу создания закрытого ключа, а затем отправить его для получения сертификата. Я нашел другой вопрос 'https://stackoverflow.com/questions/906402/importing-an-existing-x509-certificate-and-private-key-in-java-keystore-to-use-i'за которым я смог следить и мне удалось получить хранилище ключей, вроде работы с Tomcat. Однако кажется, что промежуточные сертификаты каким-то образом не связаны должным образом, и поэтому проверки SSL фактически не работают.
Вот что я сделал:
Итак, хотя я импортировал первичный и вторичный промежуточные сертификаты, кажется, что они не являются частью цепочки с импортированной цепочкой сертификатов pkcs12.
Сообщение об ошибке от средства проверки SSL
Установите или замените следующие промежуточные сертификаты ЦС на своем веб-сервере или сервере приложений и повторите этот тест.
------ Сертификат 2 ------
- Выдано - Организации: Thawte, Inc.
Организационная единица: SSL с подтверждением домена
Общее название: Thawte DV SSL
Страна CA: США
- Выпущено - Организация: thawte, Inc.
Организационное подразделение: (c) 2006 thawte, Inc. - Только для авторизованного использования.
Организационная единица 2: Отдел сертификационных услуг
Общее имя: thawte Primary Root CA Страна: США
Некоторые приложения (я не могу вспомнить, является ли Tomcat одним из них) предпочитают, чтобы цепочка сертификатов была частью той же записи в хранилище ключей, что и сертификат сервера, а не отдельными элементами.
Для этого сначала удалите два сертификата CA из хранилища ключей:
keytool -delete -alias Primary -keystore keystore.key
keytool -delete -alias Secondary -keystore keystore.key
Затем создайте файл PKCS # 7, содержащий ваш сертификат с его цепочкой CA:
openssl crl2pkcs7 -nocrl -certfile domain.crt -certfile Secondary.crt \
-certfile Primary.crt -out domain.p7b
Затем импортируйте это в существующее хранилище ключей (это перезапишет сертификат, но сохранит существующий закрытый ключ):
keytool -importcert -alias domain -file domain.p7b -keystore keystore.key
Убедитесь, что указанный вами псевдоним совпадает с псевдонимом сертификата / ключа, который уже находится в хранилище ключей.
Теперь список хранилища ключей (keytool -list -keystore keystore.key
) должен отображать сертификат с его цепочкой CA как одну запись в хранилище ключей.