Подтвердить что ты не робот

Ошибка открытого ключа Diffie-Hellman с Tomcat 7

Я успешно настроил две машины Ubuntu с сертификатами Tomcat и SSL. Я выполнял точно такую ​​же процедуру с Centos 6, но я получаю это, когда пытаюсь подключиться к серверу (используя Opera):

Сервер имеет слабый, эфемерный открытый ключ Diffie-Hellman

Коннектор является следующим, и в файле catalina.log нет ошибок:

<Connector port="some port number"  
           protocol="org.apache.coyote.http11.Http11Protocol" 
           SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keystoreFile="path to jks"
           keystoreType="JKS"
           keystorePass="mypass1"
           keyPass="mypass2"  /> 

С Firefox я получаю недоверенную коммуникационную ошибку.

4b9b3361

Ответ 1

Для меня это сработало после добавления списка разрешенных шифров в конфигурацию Tomcat в conf/server.xml, чтобы отключить слабые шифры Диффи-Хелмана:

    <Connector
        ...
        ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"
        ...

Ответ 2

Это связано с тем, что новые версии браузера начали либо вызывать предупреждения/ошибки при доступе к веб-сайтам, которые настроены на слабые шифры DH для SSL. Для получения дополнительной информации о проблеме см. Ниже ссылки

https://weakdh.org

проблема с logjam

Чтобы исправить это, вы можете найти способ обойти это со стороны браузера или сервера. Сторона серверов является лучшей, поскольку она исправит проблему для всех пользователей, если они обращаются к серверу из разных браузеров/местоположений.

Исправить проблему, мы должны убедиться, что наш сервер (в данном случае tomcat) использует сильные шифры для SSL.

В tomcat существуют две различные версии SSL. Defautl - это реализация JSSE, предоставляемая как часть среды выполнения Java. Другое - это APR-реализация, которая по умолчанию использует OpenSSL-движок.

JSSE, поскольку он зависит от среды выполнения Java, мы должны сначала узнать, какую версию Java мы используем с tomcat. Tomcat 7 поддерживает java 1.6 вверх. Затем мы должны найти соответствующие шифра, поддерживаемые соответствующей java-версией JSSE. Слабыми являются те, которые имеют "DHE", поэтому выбирайте те, которые не содержат "DHE". Ниже приведено несколько более сильных наборов для java 1.6 JSSE.

TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_ECDH_ECDSA_WITH_RC4_128_SHA
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDH_RSA_WITH_RC4_128_SHA
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_ECDSA_WITH_NULL_SHA
TLS_ECDH_RSA_WITH_NULL_SHA
TLS_ECDHE_ECDSA_WITH_NULL_SHA
TLS_ECDHE_RSA_WITH_NULL_SHA
...

Скомпилируйте список сильных кодировщиков и добавьте их в соединительные шифры в conf/server.xml в вашем tomcat

<Connector
...
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_RC4_128_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDH_RSA_WITH_RC4_128_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_NULL_SHA,TLS_ECDH_RSA_WITH_NULL_SHA,TLS_ECDHE_ECDSA_WITH_NULL_SHA,TLS_ECDHE_RSA_WITH_NULL_SHA"
...
/>

Перезагрузите сервер, и ошибка/предупреждение должны исчезнуть. Помните, что если версия Java отличается от другой, она не работает. Поэтому обратитесь к правильной версии и поддерживаемым шифрам.

Примечание. Чтобы иметь возможность использовать 256-битные AES-шифры, необходимо установить файлы политики защиты JCE Unlimited Strength.

Если Tomcat настроен на использование APR вместо JSSE, конфигурация выше не будет работать. Вы можете включить сильные комплекты шифров, следуя руководству по конфигурации tomcat ssl для APR и logjam admin guide.

Ответ 3

Он работает с Google Chrome ver.44 и благодаря Джейсону Скроггинсу за предложение:

  • На новой вкладке введите или вставьте about:config в адресную строку и нажмите Enter. Нажмите кнопку, обещая быть осторожным.
  • В окне поиска над списком введите или вставьте dhe и паузу, пока список будет отфильтрован.
  • Дважды нажмите кнопку security.ssl3.dhe_rsa_aes_128_sha, чтобы переключить его с true на false (отключите Firefox от использования этого шифрования).
  • Дважды нажмите кнопку security.ssl3.dhe_rsa_aes_256_sha, чтобы переключить его с true на false (отключите Firefox от использования этого шифрования).

Ответ 4

Добавьте это в файл server.xml и перезапустите сервер

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       keystoreFile="keystorePath"
       keystorePass="keystorepass"
       ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"
       clientAuth="false" sslProtocol="TLS"/>

Попробуйте просмотреть https://localhost:8443

Ответ 5

Для меня это была проблема использования java-версии tomcat. Я изменил версию с JDK 6 на JDK 1.7_080, и ошибка исчезла.

Когда я сказал, что я изменил версию JAVA, я имел в виду, что я изменил переменную окружения "JAVA_HOME".