SSL на Tomcat 7 (7.0.10) здесь я использую сертификат Thawte SGC
У меня проблема с настройкой SSL на tomcat 7 (7.0.10), здесь я использую сертификат Thawte SGC, пожалуйста, внимательно ознакомьтесь с описанием ниже. Я следовал ниже шаг
1) Сгенерированный ключ с помощью команды ниже
keytool -genkey -keysize 2048 -alias test_self_certificate -keyalg RSA -keystore test_self_certificate.jks -validity 730
эта команда сгенерировала файл "test_self_certificate.jks" в текущей папке
2) Этот сгенерированный CSR, используя команду ниже
keytool -certreq -alias test_self_certificate -file my_application.csr -keystore test_self_certificate.jks
эта команда сгенерировала файл "my_application.csr" в текущей папке
3) Затем я отправил этот CSR в Thawte и получил от них сертификат в формате PKCS#7, скопировал этот текст сертификата в блокнот и сохранил этот файл как "signature_certificate.p7b".
4) Затем я создал новое хранилище ключей JKS и импортировал сертификат, полученный от Thawte, используя следующую команду
keytool -import -alias signed_cert -trustcacerts -file signed_certificate.p7b -keystore tomcat_application.jks
эта команда сгенерировала файл "tomcat_application.jks" в текущей папке
5) Я обновил tomcat server.xml, как показано ниже (я указал правильный путь к файлу.jks и пароль хранилища ключей)
<Connector port="8001" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="/export/home/parsupport/Tomcat_certs/ tomcat_application.jks " keystorePass="parlive" clientAuth="false" sslProtocol="TLS" />
6) После этого изменения, когда я запускаю Tomcat, я получаю ниже Exception, и tomcat не запускается с SSL
Caused by: javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.
at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.checkEnabledSuites(SSLServerSocketImpl.java:310)
at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept(SSLServerSocketImpl.java:255)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.checkConfig(JSSESocketFactory.java:774)
Важное примечание: но если я импортирую сертификат, полученный от Thawte, в хранилище ключей (test_self_certificate.jks - упомянутое в качестве первого шага выше), который я создал для генерации KeyPair и CSR, и использую это хранилище ключей для настройки tomcat (как описано в действии 6 и выше)) затем Tomcat запускается в режиме SSL, но при попытке запустить HTTPS URL я получаю предупреждение о недоверенном сертификате.
1 ответ
keytool -genkey -keysize 2048 -alias test_self_certificate [...]
Вот, -genkey
генерирует пару с открытым / закрытым ключом и сохраняет ее в записи псевдонима "test_self_certificate", тем самым делая эту запись закрытой. (Если вы используете keytool -list
, вы увидите некоторые записи закрытого ключа и некоторые записи сертификата). -genkey
также генерирует самозаверяющий сертификат, который автоматически связывается с этим закрытым ключом (так же эффективно хранится открытый ключ по умолчанию).
keytool -import -alias signed_cert [...]
Если вы получили сертификат, выданный для закрытого ключа, который хранится в хранилище ключей, вам необходимо хранить этот сертификат для правильной записи личного ключа, а не только для любой записи. Здесь вы должны были использовать -alias test_self_certificate
вместо этого (что также может означать, что это не лучший выбор псевдонима, но это просто деталь).
(В некоторых случаях вам также может понадобиться импортировать полную цепочку.)