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

Другие вопросы по тегам