Назад | Перейти на главную страницу

Настройка Tomcat 7 для использования только TLS

У меня есть сервер Tomcat 7 на Ubuntu 14.04 (Java OpenJDK 1.7), который работает нормально уже более года, без проблем. Несколько месяцев назад он перестал быть доступен с Chrome, я решил это, переключившись на Firefox для доступа к этому конкретному сайту. Недавно (несколько дней) назад он перестал быть доступен в Firefox.

Я посоветовался этот вопрос это в основном та же проблема, что и у меня, но это решение по какой-то причине больше не работает. По состоянию на вчерашний день и Chrome 41, и Firefox 37 не отображают мой сайт. В Chrome я получаю такой ответ:

A secure connection cannot be established because this site uses an unsupported protocol.
Error code: ERR_SSL_VERSION_OR_CIPHER_MISMATCH

В Firefox я получаю следующее:

Cannot communicate securely with peer: no common encryption algorithm(s). (Error code: ssl_error_no_cypher_overlap) 

Я перепробовал все комбинации протоколов, которые ответы и ссылки рекомендуют для Tomcat 7, но без кубиков. Похоже, что производители браузеров ужесточили безопасность настолько, что эти параметры больше не работают:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslEnabledProtocols = "TLSv1,TLSv1.1,TLSv1.2"  />

Целый день экспериментировал с разными комбинациями параметров и безуспешно. Мне также удалось воспроизвести проблему на двух разных установках Tomcat (вторая в Windows), поэтому я почти уверен, что это не проблема компьютера.

Прежде чем я откажусь и установлю Java 8 и Tomcat 8, которые уничтожат остаток моих выходных, я подумал, что спрошу здесь о возможных решениях.

Для отладки ситуации вы можете использовать инструменты командной строки openssl, особенно openssl s_client. Добавляя опции -tls1, -tls1_1 и -tls1_2 вы можете проверить совместимость для протоколов, а с -cipher [cipherlist] для шифров. Например

openssl s_client -connect example.com:443 -tls1

Вы получите подробную информацию и, возможно, предупреждения о соединении, сертификате и функциях (например, повторное согласование, сжатие и т. Д.). Это поможет устранить проблему.

чтобы включить Tls в tomcat, добавьте этот параметр sslEnabledProtocols = "TLSv1.X" в раздел Connector файла server.xml tomcat в папке tomcat / conf /. например: чтобы настроить TLSv1.1, следуйте приведенной ниже конфигурации.

    <Connector port="8443" 
 protocol="org.apache.coyote.http11.Http11Protocol"
 maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
 keystoreFile="ssl/.keystore" keystorePass="changeit"
 clientAuth="false" sslProtocol="SSL" sslEnabledProtocols="TLSv1.1" />

перезапустить сервер