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
  • 根 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.comapi.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