![如何让 apache HTTP 服务器记录请求的 SSL 协议](https://linux22.com/image/675817/%E5%A6%82%E4%BD%95%E8%AE%A9%20apache%20HTTP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%B0%E5%BD%95%E8%AF%B7%E6%B1%82%E7%9A%84%20SSL%20%E5%8D%8F%E8%AE%AE.png)
我计划在运行 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 只是为了实现相同目的的尝试。