在 Nginx 环境中查看证书详情需通过 OpenSSL 解析配置中 ssl_certificate 指定的本地证书文件,或使用 openssl s_client 远程抓取实际下发证书,并可校验证书与私钥是否匹配。

在 Nginx 环境中查看证书详情,本质是检查 Nginx 配置所指向的证书文件(如 .pem 或 .crt),而不是直接从 Nginx 进程里“读取”。OpenSSL 是最可靠、最通用的命令行工具,适用于 Windows 和 Linux,无需重启服务或依赖 Nginx 日志。
直接读取本地证书文件(最常用、最准确)
这是运维最常做的操作:定位 Nginx 配置中 ssl_certificate 指令指定的路径,用 OpenSSL 解析该文件。
- 先确认证书路径:打开 Nginx 配置(如
/etc/nginx/sites-enabled/default或/usr/local/nginx/conf/nginx.conf),找到类似这一行:ssl_certificate /etc/nginx/ssl/example.com.pem; - 运行 OpenSSL 命令查看完整信息:
openssl x509 -in /etc/nginx/ssl/example.com.pem -text -noout - 常用精简查看方式:
• 仅看有效期:openssl x509 -in /etc/nginx/ssl/example.com.pem -noout -dates
• 仅看主题和颁发者:openssl x509 -in /etc/nginx/ssl/example.com.pem -noout -subject -issuer
• 仅看公钥:openssl x509 -in /etc/nginx/ssl/example.com.pem -pubkey -noout
远程连接并抓取实际下发的证书(验证线上真实行为)
本地文件可能没更新,或 Nginx 实际返回的是拼接后的证书链。用 openssl s_client 可以模拟客户端握手,看到真实发送给浏览器的证书内容。
- 基础命令(含 SNI,推荐):
openssl s_client -connect example.com:443 -servername example.com -showcerts 2>/dev/null | openssl x509 -text -noout - 只提取有效期(适合脚本监控):
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates - 查看完整证书链(含中间 CA):
去掉| openssl x509 ...部分,保留-showcerts,输出会列出所有证书,每段以-----BEGIN CERTIFICATE-----开头
校验证书与私钥是否匹配(排错关键步骤)
证书能读、Nginx 能启,但 HTTPS 打不开?大概率是证书和私钥不配对。OpenSSL 可快速验证:
- 提取证书公钥模数:
openssl x509 -in /etc/nginx/ssl/example.com.pem -noout -modulus | openssl md5 - 提取私钥模数:
openssl rsa -in /etc/nginx/ssl/example.com.key -noout -modulus | openssl md5 - 两个 MD5 值完全一致,说明配对正确;否则需重新生成或检查文件是否被替换
Windows 环境下同样适用(无需安装额外软件)
若未安装 OpenSSL,可下载轻量版(如 Win32 OpenSSL),或使用 WSL(Windows Subsystem for Linux)执行相同命令。CMD 中路径注意用双引号包裹含空格的路径,例如:openssl x509 -in "E:\nginx\ssl\site.crt" -text -noout


















