SSL 证书解析
粘贴 PEM、Base64,或打开 DER / PKCS #7 文件,查看 SAN、有效期、公钥、扩展和 SCT,并检查证书链的顺序与签名。证书在当前页面内解析,不上传。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
实例:www.baidu.com 返回的证书链
点示例会载入 2026-10-01 用 openssl s_client -showcerts 从 www.baidu.com 取到的 3 张证书。工具给出的结果:
| # | 主题 CN | 角色 | 由下一张签发 |
|---|---|---|---|
| 1 | baidu.com | 服务器证书 | 签名验证通过 |
| 2 | GlobalSign RSA OV SSL CA 2018 | 中间 CA | 签名验证通过 |
| 3 | GlobalSign | 中间 CA | 颁发者不在输入里 |
第 3 张是 GlobalSign Root CA - R3 的交叉签名版本,它的颁发者是 CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE。这张老根证书没有发送,客户端信任库里本来就有,所以没有问题。
服务器证书这几项值得看:
- 主题写成
CN=baidu.com,O=Beijing Baidu Netcom Science Technology Co.\, Ltd.,L=Beijing,ST=Beijing,C=CN。公司名里的逗号按 RFC 4514 转义成\,,和openssl x509 -subject -nameopt RFC2253的输出一致。 - SAN 有 53 个条目。输入
www.baidu.com会提示与通配符*.baidu.com匹配;通配符只覆盖一级(RFC 9525 §6.3)。 - 有效期从
2026-07-09 02:32:55 UTC到2027-01-24 02:32:55 UTC,工具算出 200 天。两个时间点相差 199 天,但 RFC 5280 把起止两端都算进有效期,多出的 1 秒按 CA/B 论坛 BR §6.3.2 的算法记为 1 天。2026-03-15 起签发的公开信任证书最长 200 天(SC-081 投票),这张正好卡在上限。 - 3 个证书透明度 SCT,列出日志 ID 和时间戳。
证书链顺序和 Nginx
Nginx 文档要求合并文件里「服务器证书必须在链上的其他证书之前」(Configuring HTTPS servers),TLS 1.3 也规定每张证书后面应是签发它的证书(RFC 8446 §4.4.2)。拼 fullchain.pem 时把顺序弄反,是常见的错误。
把上面 3 张证书倒过来粘贴,工具会提示:顺序不对,或输入里混有不同的链。从服务器证书出发的路径:#3 → #2 → #1。每一级仍显示「签名验证通过」,说明证书是一套的,只是顺序错了。点按建议顺序复制即可得到正确的文件。
只粘贴服务器证书时,卡片会写明颁发者不在输入里,并给出 AIA 里的下载地址。浏览器常会借助它补全缺失的中间证书,但 Java 默认关闭这一功能,Go 的 TLS 也不做(golang/go#31773),应在服务器上补齐。
工具检查哪些问题
- 外层与 tbsCertificate 内的签名算法是否一致(RFC 5280 §4.1.1.2)。
- 序列号是否为正数、是否超过 20 字节(§4.1.2.2);时间是否带秒和
Z,2049 年及以前是否用 UTCTime(§4.1.2.5)。 - 无法识别的关键扩展、重复扩展(§4.2)。
- 没有 SAN:浏览器不再看 CN,Chrome 从 58 版起移除了 CN 匹配。
- SHA-1 / MD5 签名、不足 2048 位的 RSA 密钥。
- 颁发者是否为 CA、是否有 keyCertSign、是否超出路径长度限制。
公钥长度按密钥本身计算:P-521 显示 521 位。指纹卡片给出 DER 的 SHA-256、SHA-1、MD5,以及公钥(SPKI)的 SHA-256 Base64 值,也就是 RFC 7469 的 pin-sha256 格式,Android 的网络安全配置和 OkHttp 证书固定都用这种格式。
支持的输入
- PEM:
CERTIFICATE、旧写法X509 CERTIFICATE、OpenSSL 的TRUSTED CERTIFICATE;块前后的文字、CRLF 换行、多余空格都会忽略。 - 没有 BEGIN / END 行的纯 Base64。
- 二进制 DER 文件和 PKCS #7(
.p7b),载入后会转成 PEM 显示在输入框里。 - CSR、公钥、CRL 会被识别并说明,不会当成证书。CSR 请用 CSR 解码器。
出错时会指出位置,例如复制时丢了一行 Base64:「第 0 字节处的 Certificate 需要 2543 字节,但只剩 2495 字节」。
与常见工具的差异
2026-10-01 用同一组证书实测:
| 工具 | 在哪里解析 | 粘贴 4 张证书的链 |
|---|---|---|
| MySSL 证书查看 | 把证书提交到服务器(/api/v1/tools/cert_decode) | 只显示第 1 张 |
| SSL Shopper | 把证书提交到服务器 | 提示无法解析 |
| 本工具 | 当前页面内 | 4 张全部解析,并检查顺序和签名 |
MySSL 把 2026-09-26 22:49:11 UTC 显示为「2026-09-27 06:49:11」,换算成了北京时间但没有标时区,对照 openssl 输出时容易看错。
限制
- 没有信任库,不查 OCSP / CRL 吊销,也不连接服务器。在线取证书链可以用
openssl s_client -connect 域名:443 -showcerts;查记录用 DNS 查询,看响应头用 HTTP Header 分析器。 - 签名验证用 Web Crypto:RSA(PKCS #1 v1.5、PSS)、P-256 / P-384 / P-521 的 ECDSA,以及浏览器支持时的 Ed25519。国密 SM2、ML-DSA、Ed448、DSA 的签名会解析,但标为未验证。
- 名称约束只显示,不套用到服务器证书的域名上。
- 文件不超过 1 MB,一次最多 200 张证书。
FAQ
证书会上传到服务器吗?
不会。解析由页面里的 JavaScript DER 解析器完成,指纹和签名验证用浏览器自带的 Web Crypto。页面本身和其他 ZeroTool 页面一样加载 Google Analytics 与 AdSense,但它们拿不到你粘贴的内容。
能直接粘贴 Nginx 用的 fullchain.pem 吗?
可以。输入里的每张证书都会解析,工具会检查每张证书后面是否紧跟着签发它的证书,并用下一张证书的公钥验证签名。顺序不对时可以一键按正确顺序复制。
文件里同时有私钥怎么办?
PRIVATE KEY、RSA PRIVATE KEY、EC PRIVATE KEY 等私钥块会被跳过,不解析;含私钥的输入也不会保存到浏览器。.pfx / .p12(PKCS #12)文件不会被打开,请先用 openssl pkcs12 -nokeys 导出证书。
显示的时间是北京时间吗?
不是。所有时间都按 UTC 显示,旁边附上证书里的原始编码(如 260709023255Z)。北京时间要再加 8 小时。
工具能判断浏览器是否信任这张证书吗?
不能。工具没有信任库,也不查吊销状态,只判断你粘贴的链是否完整、顺序是否正确、签名是否对得上。信任与否请用 openssl verify 或操作系统的证书库确认。