如何让 apache HTTP 服务器记录请求的 SSL 协议

如何让 apache HTTP 服务器记录请求的 SSL 协议

我计划在运行 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 只是为了实现相同目的的尝试。

相关内容