На виртуальной машине есть одна служба с выделенным IP-адресом, которая должна быть доступна через SSLv3 (WinXP с клиентами IE6). Я переместил эту службу несколько лет назад на эту виртуальную машину, чтобы иметь возможность отключить SSLv3 для всех других служб.
Я хотел бы уведомить клиентов SSLv3 для этой службы, что для этой службы потребуется TLS 1.1 или более поздней версии "когда-нибудь". Это уведомление нельзя показывать другим клиентам (бизнес-решение).
Чтобы достичь этого, я подумал о том, чтобы вставить информацию об используемой версии SSL / TLS на прокси (Apache) в исходный HTTP-запрос, чтобы серверное приложение могло условно разместить это «обновите вашу систему, динозавр!» уведомление на основе фактически используемого метода безопасности транспортного уровня.
Как настроить инъекцию? Я нашел необходимые переменные среды только тогда, когда Apache скомпилирован с флагами отладки, но это невозможно в производственной среде.
Конечным результатом должно быть то, что прокси-сервер Apache вставляет заголовок HTTP-запроса «X-TLS-Version: SSL3» (или «X-TLS-Version: TLS12» или знакомый синтаксис).
Mod_ssl Apache делает ряд переменные среды доступно, когда SSLOptions
директива +StdEnvVars
включен, который включает протокол SSL:
SSL_PROTOCOL
string
Версия протокола SSL (SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2)
Который затем можно использовать как состояние установить заголовок при использовании SSLv3:
SSLOptions +StdEnvVars
SetEnvIf SSL_PROTOCOL "SSLv3" insecure-protocol=true
RequestHeader set X-TLS-Version "SSLv3" env=insecure-protocol
Чтобы всегда устанавливать заголовок с протоколом SSL, может работать следующее:
RequestHeader set X-TLS-Version %{SSL_PROTOCOL}s
который имеет небольшое преимущество в том, что для простых сценариев вам не нужно нести накладные расходы SSLOptions +StdEnvVars
но может получить доступ к определенным переменным SSL напрямую с помощью %{FOOBAR}s
синтаксис.
ни один не был протестирован.
Устанавливать SSLOptions +StdEnvVars
и множество переменных среды, связанных с SSL / TLS будет установлен. (И вы можете обнаружить, что это значение уже установлено в конфигурации вашего веб-сервера, как и в некоторых примерах конфигураций.)
Переменная среды, которую ваше приложение захочет проверить, будет SSL_PROTOCOL
.
Приносим наши соболезнования за то, что не смогли вовремя удалить IE6 и XP из вашей среды.