Как глобально настроить безопасные клиенты с помощью OpenSSL на Oracle Linux 5 / RHEL 5?

На моем рабочем месте недавно был исправлен один из наших серверов для устранения уязвимости POODLE. С тех пор более старые клиенты Oracle Linux 5 (на основе RHEL 5) больше не могут безопасно подключаться к серверу с любым приложением. Клиентские компьютеры используют OpenSSL версии 0.9.8e; установка последней доступной версии OpenSSL на этих компьютерах (0.9.8e-31) не имеет значения, но принуждение клиента использовать только TLSv1 устраняет проблему.

Например, s_client дает следующее:

 $ openssl s_client -connect foo.bar.com:443 CONNECTED(00000003) 5529:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188: 

Однако это работает правильно:

 $ openssl s_client -connect foo.bar.com:443 -tls1 

Аналогично, wget https://foo.bar.com/testFile завершается с ошибкой, но работает wget --secure-protocol=TLSv1 https://foo.bar.com/testFile .

Мой основной вопрос: как я могу глобально настроить OpenSSL на этих клиентских машинах, чтобы они могли подключаться снова, без необходимости вручную перенастраивать каждое приложение, которое мы используем или которое может использовать в будущем. Обновление этих ящиков до более новых версий Linux не является вариантом. Бонусные баллы, если вы можете объяснить, что именно вызывает это поведение.

Благодаря!

Во-первых, почему? В документах для s_client указано, что openssl по умолчанию использует рукопожатие, которое определяет правильный протокол для вас. Это и есть основа атаки POODLE. Проблема в том, что в 0.9.8 это рукопожатие начинается с SSL_V23, и в какой-то более поздний момент попробует TLSv1. Многим серверам это не нравится, когда клиенты подключаются с использованием SSL_V23, потому что это красный флаг, который клиент делает что-то небезопасное, следовательно, ваша проблема.

Как это исправить? Что ж, я не смог найти какой-либо вариант для openssl.cnf, который позволит вам сказать: «Эй, по умолчанию просто используйте TLSv1». В этой теме они, похоже, предполагают, что это возможно в версии 1.0.0 +. После часа поиска в Google я решил, что лучше всего перекомпилировать openssl и отключить SSLv2 и SSLv3 . Если вы перекомпилируете openssl, то, вероятно, будет проще использовать 0.9.8, пытаясь обновить openssl до 1.x + в чем-то вроде RHEL, который может быть полным кошмаром.

Поскольку RHEL 5 страдает от одной и той же проблемы, я просто проверил их bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1152789

Они сосредоточены в основном на Tomcat 6 и их материалах JBoss, где это сводится к изменению нескольких строк в конфигурации сервера приложений.

Но внутри этой bugzilla есть поток, ведущий к проблеме openssl RHEL5.

https://rhn.redhat.com/errata/RHSA-2014-1653.html

openssl-0.9.8e-31.el5_11 – это перекомпилированный openssl, который вам нужен.

Итак: IMHO вам просто нужно установить этот патч и заставить веб-серверы приложений использовать небезопасные протоколы.