跳到主要内容
API 测试2026-07-10Begin5 分钟阅读

在线证书解码器:解析 SSL/TLS 证书信息

什么是 SSL/TLS 证书

SSL/TLS 证书是用于在网络上建立加密连接的数字证书。它包含服务器的公钥、身份信息和证书颁发机构(CA)的数字签名。你可以用站内免费的证书解码器在浏览器里解析任意 PEM 证书——解析完全本地完成。

证书结构

证书
├── 版本号(Version)
├── 序列号(Serial Number)
├── 签名算法(Signature Algorithm)
├── 颁发者(Issuer)
├── 有效期(Validity)
│   ├── 生效日期(Not Before)
│   └── 过期日期(Not After)
├── 主题(Subject)
│   ├── 通用名称(Common Name)
│   ├── 组织(Organization)
│   └── 国家(Country)
├── 公钥信息(Public Key)
├── 扩展信息(Extensions)
│   ├── 主题备用名称(SAN)
│   ├── 密钥用途(Key Usage)
│   └── 基本约束(Basic Constraints)
└── 签名(Signature)

为什么需要证书解码

  1. 安全审计:检查服务器证书配置是否正确
  2. 故障排查:诊断 SSL/TLS 连接问题
  3. 到期监控:检查证书过期时间与续期是否生效
  4. 合规检查:确认算法与密钥长度是否符合策略
  5. 开发调试:核对自签名 / 临时证书是否误进生产

证书关键字段

字段说明示例
Subject (CN)历史字段,现代浏览器几乎只看 SANwww.example.com
Issuer颁发机构Let's Encrypt / R3
Not Before生效时间2026-01-01 00:00:00 UTC
Not After过期时间2026-04-01 23:59:59 UTC
SAN实际覆盖的主机名列表example.com, *.example.com
Serial Number证书序列号03:AB:CD:EF:...
Signature Algorithm签名算法sha256WithRSAEncryption

如何使用站内工具

使用 ToolVault 的 证书解码器:

  1. 粘贴 PEM 文本(以 -----BEGIN CERTIFICATE----- 开头的整段)
  2. 查看 Issuer、Subject、有效期、SAN、公钥算法与指纹
  3. 若手里是 fullchain(多段 BEGIN CERTIFICATE),分段粘贴,分别读叶证书与中间证书

远程站点上的证书请用本机 OpenSSL / 浏览器导出后再粘贴——本工具不会根据域名联网拉取证书(隐私边界:证书明文虽公开,但「代你连目标站」会引入 SSRF 面,故刻意不做)。

使用 OpenSSL 查看证书

# 查看证书详细信息
openssl x509 -in certificate.pem -text -noout

# 查看证书有效期
openssl x509 -in certificate.pem -dates -noout

# 查看证书主题与颁发者
openssl x509 -in certificate.pem -subject -noout
openssl x509 -in certificate.pem -issuer -noout

# 从服务器拉取并展示链(务必带 -servername,否则 SNI 错证书)
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null

把 s_client 输出里每一段 BEGIN CERTIFICATE 分别保存,再用解码器或 openssl x509 -text 对照 Issuer 是否衔接下一级 Subject。

读链不只是读叶

证书只讲一半故事。叶证书(服务器出示的)由中间证书签名,中间再由浏览器信任的根签名。解码三层才暴露「无法验证」的真凶:

  • 服务器缺中间证书(头号 TLS 错配——部署 fullchain,不要只发叶)
  • 中间证书过期(叶「看起来还有效」,整链已废)
  • bundle 顺序错(必须叶 → 中间 → 根)

只解码叶证书的工具会说「有效」而浏览器失败——永远解码完整 bundle。更细的排查步骤见证书链不完整排查。

SAN 与通配符:覆盖的精确语义

现代浏览器只看 Subject Alternative Name——Common Name 已被忽略。证书只对 SAN 里的精确条目有效:www.example.com 不覆盖 example.com,反之亦然。通配符 *.example.com 恰好覆盖一层标签(api.example.com 是、v1.api.example.com 否、裸域 example.com 否)。多数「证书不匹配」错误解码下来就是 SAN 里从没有过这个主机名——五秒检查省一小时 nginx 考古。

证书生命周期里的三个时间陷阱

  1. notBefore 时钟偏移:CA 签发时 notBefore 可能略早或略晚于你的机器时钟;「一台过一台不过」优先查时钟,而不是吊销
  2. 链过期传导:中间证书过期会使叶证书「日期看着还行」却整体失效——必须逐级看 notAfter
  3. CRL/OCSP 滞后:刚吊销的证书仍可能在数小时内显示为可验证;「解码通过」描述的是你此刻拿到的材料,不是绝对真相

五大解码发现速记

现象优先怀疑
日期有效但浏览器拒绝链不完整 / 顺序错
SAN 正确仍不匹配SNI 指到了另一张证(多 vhost)
Not Before 在未来服务器时钟漂移
生产出现自签 Issuer测试证书泄漏到生产
Key Usage 缺 digitalSignatureTLS 往往仍可用;代码签名场景会被拒

和密码学工具怎么串起来

实现注记 / Implementer's note

站内解码器是手写 ASN.1/DER 子集解析器,在浏览器里跑,不调用 SubtleCrypto 做链验证(WebCrypto 也不提供完整 PKIX 路径构建)。因此它回答的是「这张 PEM 里写了什么」,不是「操作系统会不会信任它」。域名拉取刻意未做:服务端代抓等于开放出站连接,和「证书永不上传」的产品承诺冲突。需要链验证时用本机 openssl verify -CAfile 或 SSL Labs;本页负责把字段读清楚。

FAQ

PEM 和 DER 有什么区别?

PEM 是 Base64 编码的文本格式(以 -----BEGIN CERTIFICATE----- 开头)。DER 是二进制格式。可用 openssl x509 -inform DER -in cert.der -out cert.pem 转换后再粘贴。

证书过期了怎么办?

  1. 确认客户端与服务器时钟正确(假过期很常见)
  2. 看 fullchain 里是否中间证书先过期
  3. 检查自动续期(certbot / ACME)是否真的 reload 了进程
  4. 自签名只用于开发环境,勿当生产临时方案长期挂着

如何检查远程服务器的证书?

openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
  | openssl x509 -noout -dates -subject -issuer

curl -vI https://example.com 2>&1 | grep -A 6 "Server certificate"

相关阅读

本文出自 ToolVault 工具匣。首页 汇集了更多浏览器本地工具。