Среда: 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)
Я использую следующие шаги, чтобы добиться этого, где
$ 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 доверял дополнительному ЦС, поэтому он может не понадобиться для вашей настройки. Таким образом, хранилище ключей - это место, где находится сертификат сервера, а хранилище доверенных сертификатов - это то, кому сервер будет доверять (если вы хотите выполнить взаимную аутентификацию и т. Д.).