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
- Genearate de csr
keytool -certreq -alias yourhost.com -file mycsr.txt -keystore servername.jks
- Установить сертификат
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, который не работает. Смотрите этот ответ.