服务器 SSL 证书审计日志怎么做

老强君_7079

老强君_7079

2026-08-13

610人浏览

原创

服务器ssl证书审计日志的核心目标是记录谁、何时、用什么证书访问及验证结果;需配置ssl_verify_client on/optional和ssl_client_certificate,定义含$ssl_client_verify、$ssl_client_s_dn、$ssl_client_i_dn等字段的log_format,并在location中启用access_log实现精准审计。

服务器 ssl 证书审计日志怎么做

服务器 SSL 证书审计日志的核心目标是:记录谁、何时、用什么证书访问了服务,以及证书验证是否成功。它不是单纯记录“用了 HTTPS”,而是聚焦在 TLS 握手环节的证书行为——尤其是双向认证(mTLS)场景下的客户端身份与验证结果。

启用并配置客户端证书验证

这是所有审计日志的前提。Nginx 中必须主动开启客户端证书校验,否则 $ssl_client_s_dn 和 $ssl_client_verify 这类变量始终为空。

  • 在 server 块中设置 ssl_verify_client on(强制认证)或 ssl_verify_client optional(调试推荐,能捕获“未提供证书”的情形)
  • 指定受信任的 CA 证书链:ssl_client_certificate /path/to/trusted-ca-bundle.pem
  • 确保该 PEM 文件包含完整的根和中间证书,且权限为 644,Nginx 进程可读

定义结构化日志格式

仅记录 IP 或时间远远不够。审计需要上下文,所以 log_format 必须组合多个关键变量:

SSL
SSL

配置HTTPS,管理TLS证书,并调试安全连接问题。

下载
  • $ssl_client_verify:直接反映验证状态(SUCCESS / FAILED:reason / NONE)
  • $ssl_client_s_dn:客户端证书主题名,如 CN=user1,OU=API,O=Corp;需用双引号包裹,避免日志解析错乱
  • $ssl_client_i_dn:签发者 DN,用于追溯证书由哪个 CA 签发
  • 补充 $ssl_protocol 和 $ssl_cipher:辅助判断是否因协议不兼容导致握手失败(虽非 verify 失败主因,但属排查链一环)

示例(放在 http 块中):

log_format ssl_audit '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_user_agent" ssl_verify="$ssl_client_verify" subject="$ssl_client_s_dn" issuer="$ssl_client_i_dn" proto="$ssl_protocol" cipher="$ssl_cipher"';

启用日志并限定作用范围

把日志格式应用到具体位置,避免全站日志膨胀:

  • 若只审计 API 接口,在对应 location 块中写:access_log /var/log/nginx/api-mtls.log ssl_audit;
  • 确保日志路径存在、Nginx 用户有写入权限(如 chown www-data:www-data /var/log/nginx/)
  • 建议同时开启 error_log warn 级别,例如:error_log /var/log/nginx/error.log warn;,部分 verify 失败细节(如证书过期)会出现在 error 日志里

后续分析与使用要点

日志写出来只是第一步,真正发挥审计价值要靠后续处理:

  • DN 字符串含逗号和空格,解析时务必按双引号分隔字段(如 awk -F'"' '{print $6}'),再提取 CN 或 UID
  • 注意:CN 不唯一,生产环境应要求证书包含 UID、email 或 serialNumber 等唯一标识,并通过 $ssl_client_cert 变量配合 OpenSSL 解析提取(较复杂,但必要)
  • 定期检查日志中 FAILED 出现频率和原因,比如 “FAILED:certificate has expired” 表明需更新客户端证书,“FAILED:unable to get local issuer certificate” 则说明 CA 配置不全

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

ssl

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

860

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2572

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

876

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

769

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

394

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2316

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4272

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

687

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
宝塔官方文档(产品介绍)
宝塔官方文档(产品介绍)

共0课时 | 0人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 0.1万人学习