Назад | Перейти на главную страницу

Загрузка всей цепочки сертификатов в хранилище ключей для Tomcat 7

Среда: Tomcat 7.0 в Windows 2008 R2

Что делать

Заставьте Tomcat 7.0 использовать конкретный сертификат с подстановочными знаками с соответствующей цепочкой сертификатов, чтобы браузеры клиентов не выдавали ошибок. Предоставляемый сертификат является сертификатом с подстановочным знаком. Это не подлежит обсуждению и не имеет отношения к установке сертификата.

Моя проблема в том, что я не могу заставить tomcat использовать цепочку (корневые сертификаты) в дополнение к основному сертификату.

Что я пробовал

Сначала мне потребовалась целая вечность, чтобы заставить сертификат работать с предоставленной парой ключей. Ссылки 2 и 3 показали мне эти шаги по импорту предоставленной пары ключей как "PrivateKeyEntry", что Tomcat нравится больше:

#on a CentOS server cuz easier than getting a windows tool for it
openssl pkcs12 -export -in wildcard-customer-2016.crt -inkey wildcard-customer-2016.key -out wildcard-customer-2016.p12 -name wildcard -CAfile rapidssl.crt -caname root

#back on windows
C:\Program Files\Java\jre7\bin\keytool -importkeystore -deststorepass tomcat -destkeystore c:\.keystore -srckeystore c:\certificate\wildcard-customer-2016\wildcard-customer-2016.p12 -srcstoretype PKCS12 -alias wildcard

Но я не знаю, как добавить корневой сертификат, чтобы он тоже использовал его. Вы можете видеть, что команда, которую я использовал для создания файла .p12, включала команду CAfile. Команда importkeystore при запуске с «-trustcacerts» не добавляла корневые сертификаты, хотя работала с сертификатом * .customer.com.

Возможные альтернативы
Кто-нибудь объясните, как настроить мой server.xml для правильного использования APR. Притворись, что я не знаю, куда деваются файлы из архива. (Ссылка 4)

Ссылки

  1. https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html
  2. https://stackoverflow.com/questions/906402/importing-an-existing-x509-certificate-and-private-key-in-java-keystore-to-use-i
  3. http://cunning.sharp.fm/2008/06/importing_private_keys_into_a.html
  4. Создайте jks для tomcat, используя файлы .key, .ca и .cert

Я использую следующие шаги, чтобы добиться этого, где

  1. HOSTNAME.key, содержащий незашифрованный закрытый ключ
  2. HOSTNAME.cer, содержащий общедоступную цепочку cert + CA.

$ HOSTNAME должно быть полным доменным именем хоста (важно на шагах 2 и 3 для псевдонима).

openssl pkcs12 \
  -export \
  -out   $HOSTNAME.pfx \
  -inkey $HOSTNAME.key \
  -in    $HOSTNAME.cer

Затем с помощью $ HOSTNAME.pfx

keytool -importkeystore \
  -srckeystore   $HOSTNAME.pfx \
  -srcstoretype  pkcs12 \
  -srcstorepass  pazzword \
  -destkeystore  $HOSTNAME.jks \
  -deststoretype JKS \
  -deststorepass pazzword \
  -srcalias      1 \
  -destalias     $HOSTNAME

Наконец, в Tomcat server.xml

keystoreFile="/etc/tomcat7/security/$HOSTNAME.jks"
keystorePass="pazzword"
keyAlias="$HOSTNAME"
truststoreFile="/etc/tomcat7/security/mastercert.jks" 
truststorePass="changeit"

Последняя часть (хранилище доверенных сертификатов) - если вам нужно, чтобы Tomcat доверял дополнительному ЦС, поэтому он может не понадобиться для вашей настройки. Таким образом, хранилище ключей - это место, где находится сертификат сервера, а хранилище доверенных сертификатов - это то, кому сервер будет доверять (если вы хотите выполнить взаимную аутентификацию и т. Д.).