我计划在运行 Ubuntu 14.04 的 apache 2.4 服务器上禁用 TLSV1。在执行此操作之前,我认为最好分析一下这将影响多少用户。我已阅读 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\""
我错过了什么?
答案1
变量 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 只是为了实现相同目的的尝试。