Итак, у меня JBoss 5.1.0 GA, и я прочитал о том, как мне нужно отключить SSLv3 здесь:
https://access.redhat.com/solutions/1232233
Что здесь не упоминалось, так это то, что мне также нужно избавиться от всех шифров, поддерживающих откат к SSLv3. Когда я это сделал, я получил "зеленую галочку" на этом сайте.
https://www.tinfoilsecurity.com/poodle
что в основном является подтверждением того, что я защитил свой сервер и SSLv3 больше не поддерживается, но теперь я не могу получить доступ к своему веб-сайту с помощью IE (все версии IE). Поскольку в моем списке шифров в конфигурации server.xml было только 4 шифра, я стремился найти больше шифров для добавления в этот список, чтобы заставить IE работать. Я добавил более 50 шифров, но IE по-прежнему не загружает мой сайт. Вот список всех шифров, которые я использовал до сих пор (я получил список отсюда (https://www.openssl.org/docs/apps/ciphers.html):
TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA, TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA, TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA, TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA, TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, TLS_DH_DSS_WITH_SEED_CBC_SHA, TLS_DH_RSA_WITH_SEED_CBC_SHA, TLS_DHE_DSS_WITH_SEED_CBC_SHA, TLS_DHE_RSA_WITH_SEED_CBC_SHA, TLS_RSA_WITH_NULL_MD5, TLS_RSA_WITH_NULL_SHA, TLS_RSA_EXPORT_WITH_RC4_40_MD5, TLS_RSA_WITH_RC4_128_MD5, TLS_RSA_WITH_RC4_128_SHA, TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5, TLS_RSA_WITH_IDEA_CBC_SHA, TLS_RSA_EXPORT_WITH_DES40_CBC_SHA, TLS_RSA_WITH_DES_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA, TLS_DH_DSS_WITH_DES_CBC_SHA, TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA, TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA, TLS_DH_RSA_WITH_DES_CBC_SHA, TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA, TLS_DHE_DSS_EXPOR T_WITH_DES40_CBC_SHA, TLS_DHE_DSS_WITH_DES_CBC_SHA, TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, TLS_DHE_RSA_WITH_DES_CBC_SHA, TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_DH_DSS_WITH_AES_128_CBC_SHA, TLS_DH_DSS_WITH_AES_256_CBC_SHA, TLS_DH_RSA_WITH_AES_128_CBC_SHA, TLS_DH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_KRB5_WITH_RC4_128_MD5, TLS_KRB5_WITH_RC4_128_SHA
Ни один из этих шифров не работает с IE, а это означает, что когда я подхожу к своему серверу с IE, я получаю «Эта страница не может быть отображена».
Может кто-то помочь мне с этим? Есть ли шифр, который я могу использовать, который не будет открывать SSLv3 на моем сервере, а также будет работать с IE?
ОБНОВЛЕНИЕ: если я реализую решение, предложенное RedHat (то есть изменение sslProtocols на «TLSv1, TLSv1.1, TLSv1.2»):
- Я получаю сообщение об ошибке при запуске JBoss, говорящее: «TLSv1, TLSv1.1, TLSv1.2 SSLContext недоступен». Это означает, что эта строка недействительна, и я ДОЛЖЕН использовать только один из этих протоколов. Хорошо, я выберу самый безопасный: «TLS1.2».
- Другая проблема заключается в том, что в решении RedHat ничего не упоминается о шифрах. У меня сложилось впечатление, что элемент «шифры» больше не нужен, поэтому я удалил его из server.xml, изменил значение sslProtocols на «TLSv1.2» и просканировал свой сервер. ОНА ПО-ПРЕЖНЕМУ УЯЗВИМА!.
- Я попытался установить TLSv1.1 и TLSv1. Это не работает. Кажется, что элемент sslProtocols не имеет НИКАКОГО влияния на протоколы, которые использует сервер, а это означает, что какое-то значение имеет только элемент ciphers.
- Ну, тогда ладно, сказал я... Я найду какие-нибудь специфичные для TLSv1.2 шифры и добавлю их туда, тем самым наглухо обезопасив свой сервер. Я добавил ВСЕ шифры TLSv1.2 из списка, указанного в https://www.openssl.org/docs/apps/ciphers.html. Просканировал мой сервер, получил "зеленую галочку", все в порядке и безопасно... Пытался зайти на мой сервер через любой браузер... "Страница не может быть открыта". Chrome: ERR_SSL_VERSION_OR_CIPHER_MISMATCH Firefox: ssl_error_no_cypher_overlap IE: Страница не может быть открыта (не любезно сообщить мне, почему) Какого черта?! Что мне теперь делать?
- Хорошо, я начну добавлять шифры снизу вверх с https://www.openssl.org/docs/apps/ciphers.html список, ПРОПУСКАЯ SSLv3. Я попал в этот (действительно короткий) список: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, (IE работает только с этим шифром) TLS_DHE_RSA_WITH_AES_128_CBC_SHA, (FF, Chrome и Safari работают с этим шифром) TLS_DHE_RSA_WITH_AES_256_CBC_SHA, (FF, Chrome и Safari работают с этим шифром) Все браузеры работают с этим шифром, все выглядит нормально. https://www.tinfoilsecurity.com/poodle -> Зеленая галочка, все хорошо! На всякий случай попробуем еще несколько онлайн-сканеров... https://www.expeditedssl.com/poodle -> Неуязвим. ОТЛИЧНЫЙ! https://www.poodlescan.com/ -> УЯЗВИМ! Б** К!
- Окончательное сканирование: ssllabs.com ... УЯЗВИМО!
Я схожу с ума здесь... пожалуйста, помогите!
ОБНОВЛЕНИЕ 2: После двух потерянных дней, пытаясь выяснить, в чем проблема... Предложенное RedHat исправление содержало элемент sslProtocol***s***, а не sslProtocol (обратите внимание, что нет ' s' в конце), который я использовал и который описан в официальной документации JbossWeb http://docs.jboss.org/jbossweb/2.1.x/config/http.html
Я просто добавил sslProtocols = "TLSv1,TLSv1.1,TLSv1.2" и удалил элемент "шифры", все работает как положено.