Я пытаюсь перенастроить свой сервер Apache Tomcat, чтобы использовать только TLSv1. Тем не менее, он по-прежнему возвращается к SSLv3 с использованием определенных браузеров.
Я устанавливаю тег <connector> со следующими настройками:
<Connector ...
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS" ciphers="TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA" sslEnabledProtocols="TLSv1" />
Я пропустил настройку конфигурации или у меня есть какой-то подарок, который мне не нужно было показывать?
ssl
tomcat
configuration
poodle
rmiesen
источник
источник
sslProtocols=TLSv1
стихиsslProtocol="TLS"
(Заметили этоs
?). Указание ваших версий Tomcat и Java избавит вас от безумия.Ответы:
В зависимости от версии Tomcat 5 и версии 6 SSLEnabled = "true" может не работать, поскольку он был добавлен в середине выпуска. Чтобы обойти это, вам просто нужно отредактировать следующее: sslProtocols = TLS To: sslProtocols = "TLSv1, TLSv1.1, TLSv1.2"
Кажется странным, но несмотря на то, что он говорит TLS, он содержит SSL 3.
Это исправило это на нашем экземпляре Tomcat 5.5.20 и Tomcat 6. Грег
Я считаю, что вам нужно сделать это:
Jboss:
Не уверен в определении набора шифров, однако sslprotocols должен быть просто установлен в TLSv1, TLSv1.1, TLSv1.2
в зависимости от вашей версии Tomcat он будет отличаться, другие возможные решения:
Tomcat 5 и 6
** На дистрибутивах на основе RHEL5 следующее относится к версиям Tomcat 6 до Tomcat 6.0.38 **
Обратите внимание, что
TLSv1.1,TLSv1.2
поддерживается Java 7, а не Java 6. Добавление этих директив на сервер под управлением Java 6 безвредно, но не включает TLSv1.1 и TLSv1.2.Tomcat> = 7
Соединители Tomcat APR
вышеизложенное изменено, чтобы соответствовать вашим спецификациям разъема. Источник: https://access.redhat.com/solutions/1232233
источник
sslEnabledProtocols
на Tomcat 6 у насsslProtocols = "TLSv1,...."
не работал.У меня есть похожий вариант использования, который позволяет Tomcat 7 строго использовать только TLSv1.2, а не использовать более ранние протоколы SSL, такие как TLSv1.1 или SSLv3.
Я использую: C: \ apache-tomcat-7.0.64-64bit и C: \ Java64 \ jdk1.8.0_60.
Следуйте этой инструкции: https://tomcat.apache.org/tomcat-7.0-doc/security-howto.html . Tomcat относительно прост в настройке поддержки SSL.
Из многих ссылок я протестировал множество комбинаций, в конце концов я нашел 1, которая заставит Tomcat 7 принимать только TLSv1.2. 2 места нужно потрогать:
1) В C: \ apache-tomcat-7.0.64-64bit \ conf \ server.xml
где
keystoreFile
= локальное самозаверяющее доверенное хранилищеorg.apache.coyote.http11.Http11Protocol
= JSSE BIO реализация.Мы не используем
org.apache.coyote.http11.Http11AprProtocol
, потому что он работает на openssl. Базовый openssl будет использовать более ранние протоколы SSL.2) При запуске Tomcat включите следующие параметры среды.
Требуется ограничение JAVA_OPTS, в противном случае Tomcat (работающий на Java8) откажется от поддержки более ранних протоколов SSL.
Запустите Tomcat
C:\apache-tomcat-7.0.64-64bit\bin\startup.bat
Мы видим, что JAVA_OPTS появляется в журнале запуска Tomcat.
Затем мы можем использовать команду openssl для проверки наших настроек. Сначала подключите localhost: 8443 с протоколом TLSv1.1. Tomcat отказывается отвечать сертификатом сервера.
Подключите localhost: 8443 с протоколом TLSv1.2, Tomcat отвечает ServerHello сертификатом:
Это доказывает, что Tomcat теперь строго отвечает только на запрос TLSv1.2.
источник
JAVA_OPTS=-Djdk.tls.client.protocols="TLSv1.2
этом нет необходимости (Tomcat 8.0.29, Java 1.8.0_74). Здесь также не упоминается: wiki.apache.org/tomcat/Security/POODLEВ документации Tomcat 7 четко указано, что параметры
sslEnabledProtocols
иsslProtocol
поддерживаются и что между ними есть совпадение:https://tomcat.apache.org/tomcat-7.0-doc/config/http.html
источник
В Tomcat 6.0.41 вам нужно будет использовать блокирующий разъем, поскольку NIO игнорирует эти настройки.
http://wiki.apache.org/tomcat/Security/POODLE
http://mail-archives.apache.org/mod_mbox/tomcat-users/201410.mbox/%3C5440F1C6.3040205@apache.org%3E
Соединитель port = "443" protocol = "org.apache.coyote.http11.Http11Protocol" maxThreads = "200" схема = "https" secure = "true" SSLEnabled = "true" clientAuth = "false
" keystoreFile = "tomcat.jks "keystorePass =" changeit "sslEnabledProtocols =" TLSv1, TLSv1.1, TLSv1.2 "/>
источник
В Tomcat 5.5 вы должны использовать недокументированный параметр
ограничить использование именно этой версии протокола.
источник
Чтобы отключить SSL 3 (POODLE) в Jboss 4.0.3 SP1 (Tomcat 5.5 с java 1.5) в server.xml, измените свой код следующим образом.
<Connector port="443" address="${jboss.bind.address}" maxThreads="100" strategy="ms" maxHttpHeaderSize="8192" emptySessionPath="true" scheme="https" secure="true" clientAuth="false" keystoreFile="${jboss.server.home.dir}/conf/eCP.keystore" keystorePass="password" sslProtocol="TLS" protocols="TLSv1,TLSv1.1,TLSv1.2" />
источник
для более новых Tomcats используйте комбинацию sslProtocols и sslEnabledProtocols, например:
<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocols="TLSv1,TLSv1.1,TLSv1.2" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" SSLEnabled="true" URIEncoding="UTF-8" keystorePass=""/>
источник
Во-первых, как говорит @iviorel, это не
sslProtocols
такsslProtocol
. (Почему его ответ стал заниженным?)JSSE
Для меня на Tomcat 7 и Java 7
sslProtocol
следующая конфигурация не работает:Это говорит:
Но следующее работает просто отлично:
APR
Чтобы отключить SSL v3 и включить протокол TLSv1:
Чтобы включить протоколы TLSv1, TLSv1.1, TLSv1.2:
Или:
Примечание: для значений "TLSv1.1", "TLSv1.2" требуется Tomcat Native 1.1.32 и версия Tomcat, которая его поддерживает.
источник