SSL не работает для Tomcat 8

Я пытаюсь настроить SSL (https) для tomcat 8 и выполнил следующие шаги, но все еще не работает

1) Создайте файл хранилища ключей, используя

keytool -genkey -alias myservername -keyalg RSA

2) Сгенерированный CSR, как показано ниже

keytool -certreq -alias myservername -file C:\tomcat_ssl\local_machine\test.csr -keystore C:\tomcat_ssl\local_machine\test.keystore

3) Затем мы сгенерили сертификат, а затем импортировали сертификат цепи и сертификат ниже

keytool -import -alias root -keystore C:\tomcat_ssl\local_machine\test.keystore -trustcacerts -file C:\tomcat_ssl\local_machine\srv_chain.cer

keytool -import -alias myservername -keystore C:\tomcat_ssl\local_machine\test.keystore -file C:\tomcat_ssl\local_machine\srv_main.cer

4) Наконец Сделали изменения в tomcat server.xml ниже

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="C:\tomcat_ssl\local_machine\test.keystore" keystorePass="123" keystoreAlias="myservername"/>

Перезапуск tomcat и его не работает и отображается ниже экрана

Ошибка при доступе к tomcat https

В журналах tomcat он не показывает никаких ошибок, а также я пробовал другие варианты, такие как сохранение тега cipher в соединении, Enabled TLS 1,2,3, изменение порта https и т.д. безрезультатно.

Также я протестировал https-порт 443, и он показывается как прослушивание, когда я netstat. Любая идея, почему это не работает.

Добавлены журналы после включения ssl-отладки в tomcat

http-nio-443-exec-5, fatal error: 10: General SSLEngine problem
javax.net.ssl.SSLHandshakeException: SSLv2Hello is disabled
http-nio-443-exec-5, SEND TLSv1.2 ALERT:  fatal, description = unexpected_message
http-nio-443-exec-5, WRITE: TLSv1.2 Alert, length = 2
http-nio-443-exec-5, fatal: engine already closed.  Rethrowing javax.net.ssl.SSLHandshakeException: SSLv2Hello is disabled
http-nio-443-exec-5, called closeOutbound()
http-nio-443-exec-5, closeOutboundInternal()
[Raw write]: length = 7

Ответ 1

Поскольку вы используете java 8, таким образом default будет TLS 1.2.

Посмотрев на ваш скриншот, клиентский TLS не включен в вашем IE 11. По умолчанию IE 11 включен SSL 3.0, TLS 1.0, 1.1, 1.2.

Если вы видите матрицу protocols, вы поймете, почему соединение не увенчалось успехом.

Таким образом, обновите настройки IE 11 SSL TLS или попробуйте проверить другой браузер.

Ответ 2

У меня была такая же проблема давным-давно.

Mi было (шаги, которые я следую за ним, зависит от инструкций CA, сайт CA обычно имеет полные инструкции о том, как правильно генерировать сертификат):

  • Создайте сертификат еще раз, но со следующими командами (keysize 2048) (убедитесь, что имя и фамилия совпадают с именем вашего сайта: yourhost.com:

keytool -genkey -alias yourhost.com -keyalg RSA -keysize 2048 -keystore servername.jks

  1. Genearate de csr

keytool -certreq -alias yourhost.com -file mycsr.txt -keystore servername.jks

  1. Установить сертификат

keytool -import -trustcacerts -alias yourhost.com -file file-from-your-ca.p7b -keystore servername.jks

На коннекторе server.xml введите следующую конфигурацию (примечание: возможные значения sslProtocol зависят от используемого jvm, см. возможные значения для java 8 java 8 ssl values ​​)

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false"  keystoreFile="/home/myserver/ssl/servername.jks" keystorePass="yourpass" keystoreAlias="yourhost.com" sslProtocol="TLSv1.2"  />

Перезапустить tomcat

Существует больше примеров того, как настроить безопасный соединитель на этом сайте: Secure Tomcat

Ответ 3

Tomcat может использовать две разные версии SSL:

реализация JSSE, предоставляемая как часть времени выполнения Java (начиная с версии 1.4) реализация APR, которая по умолчанию использует движок OpenSSL. Точные детали конфигурации зависят от того, какая реализация используется. Если вы сконфигурировали Connector, указав общий протокол = "HTTP/1.1", то реализация, используемая Tomcat, будет выбрана автоматически. Если в установке используется APR - то есть вы установили родную библиотеку Tomcat - тогда она будет использовать реализацию протокола APR SSL, иначе она будет использовать реализацию Java JSSE.

Пожалуйста, обратитесь к https://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html для получения всех подробностей настройки. Я просто выполняю шаги, и это работает для меня.

Самое главное,. Уверены, что у вас есть проблема в вашем tomcat. Ваша ошибка может возникнуть из вашего браузера.

  • Вы пробовали другие браузеры, кроме IE?
  • Какую версию IE вы используете?
  • Windows 7 или Windows 8?

Если вы столкнулись с проблемой только в IE, проверьте также SSL 2.0 и SSL 3.0 в разделе "Расширенная настройка", а также рекомендуемое исправление включения TLS 1.0, TLS 1.1 и TLS 1.2.

Ответ 4

В настоящее время я сталкиваюсь с аналогичной проблемой, и у меня появилось сильное подозрение, что наша проблема имеет какое-то отношение к конфигурации Tomcat в server.xml. Я тоже вижу, что служба прослушивает порт, а также не очень полезные сообщения в любых файлах журналов.

Мне сказал коллега, который получил (защищенный Tomcat с SSL), чтобы ввести

   <Connector port="443" scheme="https" server="Secure Web Server"
              minSpareThreads="25" allowTrace="false" keystoreType="JKS"
              keystoreFile="C:\tomcat\conf\aSecureTomcat.jks" keystorePass="yourPassword"  
              connectionTimeout="20000"
              protocol="org.apache.coyote.http11.Http11NioProtocol" 
              secure="true" clientAuth="false" sslProtocol="TLS" 
              sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" 
              useServerCipherSuitesOrder="true" 
              ciphers="TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"/> 

Я еще не определился с минимальной конфигурацией, но важной частью для вас могут быть последние 5 строк моего фрагмента кода. Как выглядит ваша конфигурация Tomcat?

Ответ 5

Просто измените свой оригинальный server.xml: sslProtocol = TLSv1.2 Включите номер версии. Была такая же ошибка раньше.

Ответ 6

Попробуйте принудительно использовать JSSE, добавив в свой Connector:

sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"

По любой причине он обнаруживает APR и пытается использовать OpenSSL, который не работает. Смотрите этот ответ.