SSL证书解析
解析 X.509 证书,支持 PEM / DER / PFX(P12) 格式,展示完整字段、指纹、SAN 列表,支持证书链与域名匹配检查
输入域名后解析时自动检查是否在 SAN 中
openssl x509 -in cert.pem -text -noout # 查看指纹 openssl x509 -in cert.pem -fingerprint -sha256 -noout # DER 转 PEM openssl x509 -inform DER -in cert.der -out cert.pem # PFX 提取证书(IIS) openssl pkcs12 -in cert.pfx -nokeys -out cert.pem # JKS 转 PFX(Tomcat 旧版) keytool -importkeystore -srckeystore cert.jks \ -destkeystore cert.pfx -deststoretype PKCS12
关于 SSL证书解析
- 支持三种主流证书格式:PEM(Apache / Nginx)、DER(.cer / .der 二进制)、PFX / P12(IIS / Tomcat)
- Tomcat 旧版使用 JKS(Java KeyStore)格式,纯前端无法解析,需先用
keytool转为 PFX 再上传 - PFX / P12 包含证书和私钥,本工具仅提取证书部分,私钥不会被读取或展示
- 支持证书链(多个 PEM 块),可逐个查看叶证书、中间 CA、根 CA
操作说明
- PEM 格式:粘贴证书文本(含
-----BEGIN CERTIFICATE-----行),或拖拽.pem/.crt文件;点击「PEM 示例」可一键加载演示证书 - DER 格式:切换到「DER」标签,拖拽或选择
.cer/.der二进制文件;点击「DER 示例」可加载内嵌演示数据(与 PEM 示例为同一证书) - PFX / P12 格式:切换到「PFX / P12」标签,输入密码(无密码留空),拖拽或选择文件;PFX 含私钥,无法提供公开示例
- 在「域名匹配检查」框输入域名,解析时自动验证是否在 SAN 或 CN 中(支持通配符)
- PEM 模式支持 Ctrl+Enter 快捷键触发解析
注意事项
- JKS 格式(Tomcat 旧版)需先转换:
keytool -importkeystore -srckeystore cert.jks -destkeystore cert.pfx -deststoretype PKCS12 - 域名匹配支持通配符(
*.example.com匹配www.example.com,但不匹配a.b.example.com) - 证书链顺序通常为:叶证书 → 中间 CA → 根 CA,标签页按此顺序显示
- 所有处理均在浏览器本地完成,证书内容和私钥不会上传到任何服务器
SSL / TLS 证书知识
常见证书格式对比
| 格式 | 扩展名 | 编码 | 典型用途 | 是否含私钥 |
|---|---|---|---|---|
| PEM | .pem .crt .cer .key |
Base64 文本 | Apache、Nginx、Let's Encrypt | 可选(单独文件) |
| DER | .cer .der |
二进制 | Java、Android、旧版 Windows | 否 |
| PFX / P12 | .pfx .p12 |
二进制(PKCS#12) | IIS、Tomcat、Windows 导入导出 | 是(含私钥,有密码保护) |
| JKS | .jks .keystore |
Java 专有二进制 | Tomcat 旧版、Java 应用 | 是(含私钥) |
| P7B / P7C | .p7b .p7c |
Base64(PKCS#7) | Windows 证书链导出 | 否(仅证书链) |
证书链(Certificate Chain)结构
根 CA 证书
Root CA 中间 CA 证书
Intermediate CA 叶证书(服务器证书)
End-Entity / Leaf
Root CA 中间 CA 证书
Intermediate CA 叶证书(服务器证书)
End-Entity / Leaf
- 根 CA(Root CA):自签名,内置于操作系统和浏览器的信任库,是整个信任链的起点
- 中间 CA(Intermediate CA):由根 CA 签发,用于签发服务器证书,隔离根 CA 私钥风险
- 叶证书(Leaf Certificate):部署在服务器上的证书,包含域名和公钥,由中间 CA 签发
- 浏览器验证时从叶证书逐级向上验证签名,直到找到受信任的根 CA
- 部署时通常需要将叶证书 + 中间 CA 证书合并为一个
.pem文件(证书链文件)
公钥算法对比
| 算法 | 常见密钥长度 | 安全性 | 性能 | 推荐场景 |
|---|---|---|---|---|
| RSA | 2048 / 4096 位 | 2048 位目前安全,4096 更强 | 较慢(尤其握手阶段) | 兼容性要求高的场景 |
| ECDSA | P-256 / P-384 | P-256 ≈ RSA 3072 位 | 快(推荐) | 现代 Web 服务器、CDN |
| Ed25519 | 256 位(固定) | 高 | 极快 | SSH 密钥、新型 TLS 场景 |
有效期与续签建议
- 自 2020 年起,公开信任的 SSL 证书最长有效期为 398 天(约 13 个月)
- Let's Encrypt 证书有效期为 90 天,建议配置自动续签(certbot / acme.sh)
- 建议在到期前 30 天开始续签,避免因续签失败导致服务中断
- 根 CA 证书有效期通常为 20~30 年,中间 CA 为 5~10 年
# 查看证书到期时间
openssl x509 -in cert.pem \
-noout -enddate
# 批量检查到期(30天内)
openssl x509 -in cert.pem \
-noout -checkend 2592000
SAN 与通配符证书
SAN(Subject Alternative Name)
- 现代证书通过 SAN 扩展字段声明受保护的域名列表
- 一张证书可包含多个域名(多域名证书 / SAN 证书)
- Chrome 58+ 起不再识别 CN 字段中的域名,必须使用 SAN
- SAN 支持 DNS 名称、IP 地址、Email 地址等类型
通配符证书(Wildcard Certificate)
*.example.com匹配所有一级子域名,如www.example.com、api.example.com- 不匹配多级子域名:
*.example.com不匹配a.b.example.com - 不匹配根域名本身:
*.example.com不匹配example.com(需单独添加 SAN) - Let's Encrypt 通配符证书需要 DNS-01 验证方式
常见证书错误与排查
| 错误信息 | 原因 | 解决方法 |
|---|---|---|
NET::ERR_CERT_DATE_INVALID |
证书已过期或系统时间不正确 | 续签证书或校正系统时间 |
NET::ERR_CERT_COMMON_NAME_INVALID |
域名不在证书 SAN 列表中 | 重新申请包含该域名的证书 |
NET::ERR_CERT_AUTHORITY_INVALID |
证书链不完整或根 CA 不受信任 | 补全中间 CA 证书,或安装根证书 |
SSL_ERROR_RX_RECORD_TOO_LONG |
HTTP 端口收到了 HTTPS 请求 | 检查服务器监听端口配置 |
| 证书链不完整(部分浏览器报错) | 服务器只发送了叶证书,未包含中间 CA | 将中间 CA 证书追加到叶证书文件末尾 |
| 私钥与证书不匹配 | 证书和私钥不是同一对密钥 | 对比公钥指纹:openssl x509 -pubkey -noout | openssl md5 |