Наборы шифров DSA, не поддерживаемые встроенным Jetty 9.4 в Java

Я использую последние Jetty и JDK, он должен поддерживать наборы шифров DSA, такие как TLS_DHE_DSS.... Поэтому я сгенерировал файл сертификата и пары ключей с алгоритмом DSA, загрузил его на свой сервер и перезапустил мой сервер, сервер успешно запустился, Но после этого я не смог использовать какой-либо браузер, чтобы открыть какую-либо страницу этого сервера. Все, что я увидел, это сообщение об ошибке на странице: ERR_SSL_VERSION_OR_CIPHER_MISMATCH.

Может ли кто-нибудь помочь мне с этим? Есть ли проблема с причалом для DSA?

2 ответа

Нет смысла рассылать спам как по стеку, так и по проблемам github (мы обращаем внимание на оба)

Что касается DSA в вашем хранилище ключей / ключей, вы не можете использовать его для SSL/TLS (не поддерживается Jetty, Java и даже различными версиями протокола SSL / TLS. DSA - это просто алгоритм подписи / проверки, он не 't для шифрования / дешифрования / обмена ключами, необходимыми для SSL/TLS).

Используйте RSA для хранилища ключей и укажите алгоритм SHA256 (или выше) и размер бита 4096 (или лучше).

Сделайте дамп своего запуска и посмотрите, почему шифры, которые вас интересуют, отключены.

$ cd /path/to/my/jettybase
$ java -jar /path/to/jetty-dist/start.jar jetty.server.dumpAfterStart=true

Ищите SslContextFactory дерево, а Cipher Suites ветка. Disabled В разделе будут перечислены все отключенные комплекты шифров, а также указано, где был отключен этот конкретный комплект шифров.

Вот увидишь...

  • JreDisabled это означает, что у самой JVM это отключено.
  • ConfigExcluded это означает, что ваш ${jetty.base} конфигурация отключена.

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

У меня похожая проблема со встроенной Jetty в OpenNMS. Захват Wireshark, показывающий шифры, предлагаемые браузером

Насколько я могу судить, существует множество общих шифров и версий TLS между тем, что предлагает браузер, и тем, что поддерживается Jetty, и тем не менее Jetty отклоняет соединение с приведенным выше сообщением об ошибке несоответствующего шифра. Все три основных браузера, похоже, отказывают одинаково с ошибкой Fatal Hanshake (TLS1.2). Однако использование имени хоста, не являющегося полным доменным именем, для создания несоответствия имени хоста / домена позволяет пользователю настроить исключение для сайта и TLS для "успеха" с TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA и TLS v1.2 . Следовательно, кажется, что шифры не являются проблемой. Что-то еще в рукопожатии вызывает сбой Jetty, и браузеры неправильно интерпретируют ответ как несоответствие шифра.

Из дампа после старта пристани:

 |   |   += SslContextFactory@629464ad(file:///opt/opennms/etc/jetty.keystore,file:///opt/opennms/etc/jetty.keystore) trustAll=false
 |   |   |   +- Protocol Selections
 |   |   |   |   +- Enabled (size=3)
 |   |   |   |   |   +- TLSv1
 |   |   |   |   |   +- TLSv1.1
 |   |   |   |   |   +- TLSv1.2
 |   |   |   |   +- Disabled (size=2)
 |   |   |   |       +- SSLv2Hello - ConfigExcluded:'SSLv2Hello'
 |   |   |   |       +- SSLv3 - JreDisabled:java.security, ConfigExcluded:'SSLv3'
 |   |   |   +- Cipher Suite Selections
 |   |   |       +- Enabled (size=42)
 |   |   |       |   +- TLS_DHE_DSS_WITH_AES_128_CBC_SHA
 |   |   |       |   +- TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
 |   |   |       |   +- TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
 |   |   |       |   +- TLS_DHE_DSS_WITH_AES_256_CBC_SHA
 |   |   |       |   +- TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
 |   |   |       |   +- TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
 |   |   |       |   +- TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
 |   |   |       |   +- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
 |   |   |       |   +- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
 |   |   |       |   +- TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
 |   |   |       |   +- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
 |   |   |       |   +- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
 |   |   |       |   +- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
 |   |   |       |   +- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
 |   |   |       |   +- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
 |   |   |       |   +- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
 |   |   |       |   +- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
 |   |   |       |   +- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
 |   |   |       |   +- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
 |   |   |       |   +- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
 |   |   |       |   +- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
 |   |   |       |   +- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
 |   |   |       |   +- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
 |   |   |       |   +- TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
 |   |   |       |   +- TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
 |   |   |       |   +- TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
 |   |   |       |   +- TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
 |   |   |       |   +- TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
 |   |   |       |   +- TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
 |   |   |       |   +- TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
 |   |   |       |   +- TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
 |   |   |       |   +- TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
 |   |   |       |   +- TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
 |   |   |       |   +- TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
 |   |   |       |   +- TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
 |   |   |       |   +- TLS_EMPTY_RENEGOTIATION_INFO_SCSV
 |   |   |       |   +- TLS_RSA_WITH_AES_128_CBC_SHA
 |   |   |       |   +- TLS_RSA_WITH_AES_128_CBC_SHA256
 |   |   |       |   +- TLS_RSA_WITH_AES_128_GCM_SHA256
 |   |   |       |   +- TLS_RSA_WITH_AES_256_CBC_SHA
 |   |   |       |   +- TLS_RSA_WITH_AES_256_CBC_SHA256
Другие вопросы по тегам