mod_log_config可记录TLS握手成功后的密码套件名(%{SSL_CIPHER}x)和对称密钥位数(%{SSL_CIPHER_USEKEYSIZE}x),但无法记录握手失败、ClientHello等中间过程;需启用mod_ssl且配置于HTTPS虚拟主机内。
Apache 的
可以记录成功完成 TLS 握手后的加密位数和密码套件名称,但前提是已启用
,且请求实际走通了 HTTPS 连接。它无法记录握手失败、ClientHello 或协议协商过程中的中间状态。
确认基础依赖已就绪
确保以下条件满足,否则相关日志变量将为空或报错:
已加载:运行
或
(Debian/Ubuntu)验证;
虚拟主机启用了 SSL:配置中包含
和有效证书;
日志格式定义在 HTTPS 虚拟主机内,或至少作用于启用了 SSL 的
块中。
使用标准 SSL 日志变量
Apache 通过
语法提供 OpenSSL 会话级变量,其中两个关键字段直接对应需求:
:记录协商成功的完整密码套件名,例如
;
:记录对称加密的实际有效密钥位数,例如
或
(注意:不是算法最大支持位数,而是本次会话实际使用的)。
配置示例(推荐写法)
在 Apache 配置文件(如
)中添加:
Apache 2.4.62
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
下载
重启 Apache 后,日志行末尾会出现类似
的内容。
注意事项与常见问题
这些字段只在 TLS 握手成功、HTTP 请求进入处理流程后才可用。若出现空值或短横线(
),通常说明:
该请求是 HTTP(非 HTTPS),变量不可用;
TLS 握手失败(如协议不匹配、证书错误、SNI 不支持),请求根本未到达日志模块;
配置未生效于正确的虚拟主机,或
定义位置不对(需在 SSL 主机块内或全局生效)。
如需排查握手失败原因,请查看
并设置
,而非依赖访问日志。
mod_log_configmod_sslmod_sslhttpd -M | grep ssla2enmod sslSSLEngine on%{}x%{SSL_CIPHER}xECDHE-ECDSA-AES128-GCM-SHA256%{SSL_CIPHER_USEKEYSIZE}x128256/etc/apache2/sites-enabled/ssl.confLogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{SSL_CIPHER}x %{SSL_CIPHER_USEKEYSIZE}x" ssl_cipher_log
CustomLog /var/log/apache2/ssl_access.log ssl_cipher_log
ECDHE-RSA-AES256-GCM-SHA384 256-LogFormatErrorLogLogLevel ssl:debug