Назад | Перейти на главную страницу

Как заставить HTTP-сервер apache регистрировать протокол SSL для запросов

Я планирую отключить TLSV1 на сервере apache 2.4, работающем на Ubuntu 14.04. Прежде чем это сделать, я подумал, что было бы хорошо проанализировать, на скольких пользователей это повлияет. Я прочитал документацию журнала apache, которая должна позволить мне регистрировать переменные среды.

http://httpd.apache.org/docs/2.4/mod/mod_log_config.html

У меня есть RewriteRule, я настроил перенаправления пользователей с TLSV1, который отлично работает, это правило выглядит так.

    RewriteCond %{SSL:SSL_PROTOCOL}  ^TLSv1$
    RewriteRule ^/test* /bad-ssl.html [L]

Что отлично работает. Однако я не могу заставить модуль журнала записывать переменные среды SSl.

    CustomLog ${APACHE_LOG_DIR}/ssl.log "%a \"%{SSL_PROTOCOL}e\" \"%{SSL:SSL_PROTOCOL}e\" \"%{evn:SSL_PROTOCOL}e\""

Что мне не хватает?

Переменная SSL_PROTOCOL (и все другие переменные mod_ssl) технически не является переменной среды, поэтому

"%{VARNAME}e"

не сработает.

В соответствии с http://httpd.apache.org/docs/2.4/mod/mod_ssl.html (Раздел Пользовательские форматы журналов) вы должны использовать синтаксис:

"%{VARNAME}x"

для переменных SSL. Чтобы изменить вашу конфигурацию, она должна выглядеть так:

CustomLog ${APACHE_LOG_DIR}/ssl.log "%a \"%{SSL_PROTOCOL}x\""

Я предполагаю, что SSL: SSL_PROTOCOL и evn: SSL_PROTOCOL были всего лишь попытками добиться того же.