在线证书解码器:解析 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)
为什么需要证书解码
- 安全审计:检查服务器证书配置是否正确
- 故障排查:诊断 SSL/TLS 连接问题
- 到期监控:检查证书过期时间与续期是否生效
- 合规检查:确认算法与密钥长度是否符合策略
- 开发调试:核对自签名 / 临时证书是否误进生产
证书关键字段
| 字段 | 说明 | 示例 |
|---|---|---|
| Subject (CN) | 历史字段,现代浏览器几乎只看 SAN | www.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 的 证书解码器:
- 粘贴 PEM 文本(以
-----BEGIN CERTIFICATE-----开头的整段) - 查看 Issuer、Subject、有效期、SAN、公钥算法与指纹
- 若手里是 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 考古。
证书生命周期里的三个时间陷阱
- notBefore 时钟偏移:CA 签发时 notBefore 可能略早或略晚于你的机器时钟;「一台过一台不过」优先查时钟,而不是吊销
- 链过期传导:中间证书过期会使叶证书「日期看着还行」却整体失效——必须逐级看 notAfter
- CRL/OCSP 滞后:刚吊销的证书仍可能在数小时内显示为可验证;「解码通过」描述的是你此刻拿到的材料,不是绝对真相
五大解码发现速记
| 现象 | 优先怀疑 |
|---|---|
| 日期有效但浏览器拒绝 | 链不完整 / 顺序错 |
| SAN 正确仍不匹配 | SNI 指到了另一张证(多 vhost) |
| Not Before 在未来 | 服务器时钟漂移 |
| 生产出现自签 Issuer | 测试证书泄漏到生产 |
| Key Usage 缺 digitalSignature | TLS 往往仍可用;代码签名场景会被拒 |
和密码学工具怎么串起来
- 公钥算法是 RSA 时,密钥长度与填充语境见 RSA 加解密指南
- 国密双证书 / TLCP 场景见 国密 HTTPS 部署指南
- 浏览器侧若报 JWT/HTTPS 混用问题,先分清「传输层证书」与「应用层令牌」——证书解码解决前者;令牌时间问题见 JWT exp/nbf 时钟漂移
实现注记 / 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 转换后再粘贴。
证书过期了怎么办?
- 确认客户端与服务器时钟正确(假过期很常见)
- 看 fullchain 里是否中间证书先过期
- 检查自动续期(certbot / ACME)是否真的 reload 了进程
- 自签名只用于开发环境,勿当生产临时方案长期挂着
如何检查远程服务器的证书?
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"
相关阅读
- 证书链不完整排查
- Base64 与 Base64URL:JWT 三段与 PEM
- 国密 HTTPS:TLCP 与 SM2 双证书
- RSA 加解密详解
- ERR_OSSL_EVP_UNSUPPORTED 排查
本文出自 ToolVault 工具匣。首页 汇集了更多浏览器本地工具。
相关工具
相关文章
HTTPS 证书链不完整:浏览器不信任但解码「看起来正常」
叶证书日期有效、SAN 也对,浏览器仍报不受信任?多数是缺中间证书或 fullchain 顺序错。用 openssl s_client 与本地证书解码器逐级核对 Issuer→Subject。
HTTP API 测试完全指南:从基础到高级调试技巧
掌握 HTTP API 测试的核心技巧,包括 GET/POST/PUT/DELETE 请求、请求头配置、请求体格式、认证方式和调试方法。使用在线 API 测试工具提升开发效率。
HTTP GET vs POST:什么时候用哪个?语义、安全与最佳实践
GET 和 POST 的语义差异、幂等性、缓存、URL 长度限制、安全考量、RESTful 约定、常见误用与 curl 示例。附决策表,帮你正确选择 HTTP 方法。