关于 证书解析工具
证书解析工具可以从 PEM 文本、DER 文件或 PKCS#12 包中读取 X.509 证书,并把里面的内容摊开:主题与签发者、序列号、有效期、公钥、签名算法 OID、SAN 列表、密钥用途、SHA-256 指纹,以及它是不是 CA。粘贴多张证书时,还会按你给出的顺序做一次基础的证书链校验。
绝大多数 TLS 故障,最后都归结为文件本身就能回答的问题:这张证书覆盖哪些域名、什么时候过期、谁签的、和另一个环境上跑的是不是同一张。但读到这些字段并不等于建立了信任——那还需要一条通向客户端已信任的根的路径、与 SAN 匹配的主机名、未被吊销的序列号,以及一台会下发中间证书的服务器。本工具回答前一类问题,不声称能回答后一类。
如何使用这个开发者工具
- 把一段或多段 PEM 粘进文本框,或选择 .pem、.crt、.cer、.der、.p12、.pfx 文件。
- 解析 PKCS#12 包之前先填好密码;格式是按文件扩展名判断的,所以请保留 .p12 或 .pfx 的文件名。
- 点击解析,从上往下读每张证书卡片:主题与签发者能看出是不是自签名,SAN 列表说明它覆盖哪些主机名。
- 留意状态标签:已过期、30 天内即将过期、主题与签发者相同都会在这里提示。
- 需要证明两个环境用的是同一张证书时,比对 SHA-256 指纹。
实例:一张覆盖两个主机名的自签名证书
这是为一台预发布主机真实签发的证书,下面的解析结果就是工具渲染出来的内容。
-----BEGIN CERTIFICATE-----
MIIDvDCCAqSgAwIBAgIUKVLmx56R9EdcxqKTrrfh4PIf81MwDQYJKoZIhvcNAQEL
BQAwPjELMAkGA1UEBhMCREUxFTATBgNVBAoMDEV4YW1wbGUgR21iSDEYMBYGA1UE
AwwPYXBpLmV4YW1wbGUuY29tMB4XDTI2MDkyMTA3MDQ1M1oXDTI3MDkyMTA3MDQ1
M1owPjELMAkGA1UEBhMCREUxFTATBgNVBAoMDEV4YW1wbGUgR21iSDEYMBYGA1UE
AwwPYXBpLmV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEA07x10ZyWzNfGA2Jkkoe7TcOCT/x3q9Rf8DcsiISGO5jBNTwp+lp3sGLxOGnL
dmSbRh5MkL3o66HtVC+e3G/bll34JbwuUIjlJiLGLCj/UReG3HoolrDOlzTY9TMx
h9z8scbvZIUTCok+iCGdQjTt2ii+EDkCv2V8wCUKDcvqniQX13dvd7XQpLL9ucKb
OqAcRAN1FXhjzXOyhEDf5GQjOryZlwhGRdQRIboMv2aFyrPK2mcOrNQuHjLwc9EE
FZApSGRKZIcND/gCllB9t9VI3NhZIrn9t4sINXBXzwymD1Mcr9WdqyWpYTKzxPci
wPkIvy5r3GU17rwR4ez9dcwPGQIDAQABo4GxMIGuMB0GA1UdDgQWBBRAXYdd/YCb
g0+A+Mo20U8GULwiWDAfBgNVHSMEGDAWgBRAXYdd/YCbg0+A+Mo20U8GULwiWDAv
BgNVHREEKDAmgg9hcGkuZXhhbXBsZS5jb22CE3d3dy5hcGkuZXhhbXBsZS5jb20w
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM
BgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQB74CIo9R5iVScxKXkkGFjm
otjYpKdhArpe998fm14v9rNeHrJzsfb6AitA/5X0GnyJI7QxvhJ5td97r3dIq3x7
8fz8OwZ9+IDQszMetNrLTScWlZfGL2P4SX2cNwJAY/9kE3qxq6BZRcWh+8Znu5Ut
Ei+oHZXupIRvv0GgoaGE48cX3VKEw353SVM73ual7vfFmM6PpfaRrihlEp5jDWK4
FxsO1dxc15rCc0wsqBzWhMCqP9a9GAjqJze334mk59t3EF7FPVHXUaEy5QrHkSNv
VTkb6QNOGbJYAemu3/f3z9T8yR1AfHKjNKg1mrboMJNO2eyvSpIUWpP8ByU1Tep5
-----END CERTIFICATE-----主题 C=DE, O=Example GmbH, CN=api.example.com
签发者 C=DE, O=Example GmbH, CN=api.example.com
序列号 2952e6c79e91f4475cc6a293aeb7e1e0f21ff353
有效期 2026-09-21T07:04:53.000Z → 2027-09-21T07:04:53.000Z
公钥 RSA 2048 位
签名算法 OID 1.2.840.113549.1.1.11
SAN api.example.com, www.api.example.com
Key Usage digitalSignature, keyEncipherment
Extended Usage serverAuth, clientAuth
SHA-256 96:7D:CA:32:0A:59:C0:9B:BD:8F:5E:AA:CA:7F:55:85:BC:C2:7A:E6:D8:3A:72:0A:B5:BB:71:BA:BB:48:42:FB
CA 否
状态 可能是自签名证书主题和签发者完全相同,说明除了它自己没有任何人为它背书,状态标签因此标记为自签名。OID 1.2.840.113549.1.1.11 就是 sha256WithRSAEncryption;工具只打印原始 OID 而不做友好翻译,所以下面这张对照表正是你需要的查询表。
证书文件类型与签名 OID
上半部分说明各扩展名通常装着什么,下半部分用来翻译解析结果中打印的签名算法 OID。
| 条目 | 编码或含义 | 内容 / 说明 |
|---|---|---|
| .pem、.crt、.cer | BEGIN/END 之间的 Base64 DER | 一张或多张证书;本工具可解析 |
| .der | 原始 DER 二进制 | 恰好一张证书;本工具可解析 |
| .p12、.pfx | PKCS#12,有密码保护 | 证书链,通常还含私钥;这里只展示证书部分 |
| .key | PEM 或 DER 私钥 | 查看证书时完全用不到;本工具不解析 |
| .csr | PKCS#10 请求 | 是申请书不是证书;请用 openssl req -text |
| .p7b、.jks | PKCS#7 / Java 密钥库 | 证书链容器;本工具不支持,请先用 openssl 或 keytool 转换 |
| 1.2.840.113549.1.1.11 | sha256WithRSAEncryption | 当前 RSA 证书的默认签名算法 |
| 1.2.840.113549.1.1.5 | sha1WithRSAEncryption | 已废弃,现代客户端会拒绝 |
| 1.2.840.10045.4.3.2 | ecdsa-with-SHA256 | ECDSA 证书,参见下面第一条排错说明 |
常见问题排查
一张正常的 ECDSA 证书被判为无效。
成因 解析器依赖的库只能读取 RSA 公钥。EC 证书在读取 SubjectPublicKeyInfo 这一步就失败了,任何字段都来不及展示,最终表现为笼统的「证书内容或密码无效」。
解决办法 EC 与 Ed25519 证书请用 openssl x509 -in cert.pem -text -noout 查看。内部 PKI 和不少签发机构仍以 RSA 为主,这类证书在这里解析正常。
密码没错,PKCS#12 文件却打不开。
成因 格式是按文件名判断的:只有以 .p12 或 .pfx 结尾的文件才会走 PKCS#12 分支。被改名成 .cer 或下载时丢了扩展名的包,会被当作 PEM 或 DER 处理并失败。
解决办法 选文件前先把 .p12 或 .pfx 扩展名改回来。密码真的错时报错形态不同,因为 PKCS#12 的 MAC 无法通过校验。
服务器能正常使用的链,这里却校验不通过。
成因 校验会把你粘贴的最后一张证书当作信任锚,并按给定顺序验证。期望的顺序是叶证书 → 中间证书 → 根证书;以根证书开头,或缺少叶证书签发者的包,都无法这样通过。
解决办法 按叶证书到根证书的顺序重排文件,缺中间证书就补上。通过与否只能说明这几张证书彼此签发关系成立,不代表任何客户端信任这个锚点。
解析一切正常,浏览器还是报警告。
成因 解析呈现的是内容。出现警告通常意味着:主机名不在 SAN 列表里、服务器没有下发中间证书、根证书不在客户端信任库中,或者系统时间不对。
解决办法 先把 SAN 列表和你访问的主机名对一遍,再用 openssl s_client -connect host:443 -showcerts 看服务器到底发了什么。
适合用这个工具的场景
- 在续期前后检查到期时间和 SAN 列表。
- 通过比对 SHA-256 指纹,证明预发布和生产用的是同一张证书。
- 在部署之前确认证书包的顺序和完整性。
- 不导入钥匙串,就把同事邮件发来的 PKCS#12 里的证书读出来。
应该换用别的工具的场景
- 判断一张证书是否受信任。只有带信任库的客户端才能回答,请用 openssl s_client 或浏览器自带的证书查看器。
- 查看 ECDSA / Ed25519 证书、证书签名请求或私钥,这三类都交给 openssl。
- 测试线上端点的 TLS 配置。网站检查工具能告诉你主机是否可达,而本工具从不发起任何连接。
隐私与数据处理
解析、PKCS#12 解密和指纹计算全部在当前浏览器标签页内完成;你输入的密码只作为内存中的解密密钥使用,不保存也不上传。证书本身是公开信息,所以文件不是敏感部分。PKCS#12 包则不同,它通常连私钥一起打包,请用可以作废的副本。
相关开发者工具
常见问题
解析证书等于验证证书吗?
不等于。解析只是解码结构并把字段展示出来。验证意味着把签名链校验到受信任的根、比对主机名、遵守有效期与吊销状态,这些都不是一个解码器能单独决定的。
SHA-256 指纹有什么用?
它是整张 DER 编码证书的摘要,指纹相同就是同一张证书。想确认某次部署是否真的用上了你准备的那份文件,这是最快的办法。
我输入的 PKCS#12 密码会被发到哪里吗?
不会。它直接传给本标签页内的解密流程,随页面一起销毁。但要注意,这类文件通常还装着私钥,请按照对待私钥的标准来对待它。
「可能是自签名证书」到底是什么意思?
意思是主题和签发者字段完全一致,证书为自己背书。对根 CA 或本地开发证书来说这很正常;如果你以为它由公共机构签发,那就是问题。
证书链该按什么顺序粘贴?
叶证书在前,然后是各级中间证书,最后是根证书,与 TLS 服务器下发的顺序一致。校验会用最后一项构建信任锚,所以倒序的文件会报失败。
为什么签名算法显示成一串数字?
解析器直接打印证书里的原始算法 OID,不做翻译。上面的对照表覆盖了最常见的三个:以 1.2.840.113549.1.1 开头的是 RSA,1.2.840.10045.4.3 开头的是 ECDSA。