Наборы шифров 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