Установка промежуточного / цепного сертификата с помощью Java Key Tool

У меня есть файл JKS, созданный для Confluence, который уже содержит мой закрытый и открытый ключи. Он отлично работает с большинством браузеров, хотя есть одна небольшая проблема. В sslshopper я получаю следующее сообщение:

Сертификату доверяют не все веб-браузеры. Возможно, вам потребуется установить промежуточный / цепной сертификат, чтобы связать его с доверенным корневым сертификатом.

Я получил цепочку CA + Root от Comodo, прочитал и попытался сделать следующее:

keytool -importcert -keystore fecru.jks -storepass SECRET -trustcacerts -alias chain -file cachain.bundle

Несмотря на то, что сертификат был успешно добавлен в хранилище ключей, я все равно получаю те же результаты.

Что мне не хватает?


person JustAGuy    schedule 01.01.2017    source источник
comment
Вероятно, в вашем файле связки есть несколько сертификатов. IIRC, keytool не может работать с пакетами, только с отдельными сертификатами, поэтому он, вероятно, импортировал первый сертификат в пакете и проигнорировал остальные. Что keytool -list -v -keystore [yourkeystore] показывает вам?   -  person Christopher Schultz    schedule 04.01.2017
comment
Я также попытался добавить их все по отдельности. те же результаты. У меня сейчас 4 псевдонима. 1 для самого сертификата, 1 для корневого и еще 2 для промежуточных.   -  person JustAGuy    schedule 04.01.2017


Ответы (1)


Вот что у меня есть в моей шпаргалке «Java TLS с хранилищами ключей», на которую мне нужно постоянно ссылаться, потому что по какой-то причине, если вы не делаете это идеально, кажется, что ничего не работает.

  1. Создайте ключ сервера (и самозаверяющий сертификат)

    $ keytool -genkey -keyalg RSA -sigalg SHA256withRSA -keysize 4096 -alias ${HOSTNAME} -keystore ${HOSTNAME}.jks

  2. Создать запрос на подпись сертификата (CSR)

    $ keytool -certreq -sigalg SHA256withRSA -keystore ${HOSTNAME}.jks

  3. Получите ваш CSR, подписанный центром сертификации (CA)

  4. Импортируйте сертификаты обратно в хранилище ключей, начиная с корневого сертификата ЦС и возвращаясь по цепочке обратно к сертификату вашего сервера.

    $ keytool -import -alias [Authority.CA] -trustcacerts -file [authority's CA cert] -keystore ${HOSTNAME}.jks

    $ keytool -import -alias [Authority.intermediate] -trustcacerts -file [authority's intermediate cert] -keystore ${HOSTNAME}.jks

    $ keytool -import -alias ${HOSTNAME} -file ${HOSTNAME}.crt -keystore ${HOSTNAME}.jks

Я всегда делаю резервную копию хранилища ключей после того, как сгенерирую ключ своего сервера, на случай, если я что-то сломаю.

критически важно несколько вещей:

  1. Не забудьте использовать тот же alias в шагах 1 и 4c (импорт подписанного сертификата вашего сервера) выше.
  2. Не забудьте установить для атрибута keyAlias в Tomcat <Connector> то же значение, которое вы использовали для сертификата вашего сервера (опять же, то же значение, что и в шагах 1 и 4c выше).

Я настоятельно рекомендую использовать инструмент Qualys SSLTest для тестирования вашего сайта. Это наиболее полный инструмент тестирования, который я знаю, и он не пытается вам ничего продать.

person Christopher Schultz    schedule 04.01.2017