首页/安全/加密与证书速查/X.509 证书结构(v3)

X.509 证书结构(v3)

证书是 CA 对公钥与身份绑定关系的签名文件;X.509 v3 包含版本、序列号、签发者、有效期、主体、公钥与扩展,几乎所有 TLS 证书都使用该结构。

加密与证书速查安全更新于 2026-10-13

X.509 证书结构

X.509 证书是一份由 CA 用私钥签名的数据,把公钥与身份信息绑定在一起。v3 版本包含版本号、序列号、签名算法、签发者、有效期、主体、公钥信息,以及一系列扩展(SAN、KeyUsage、EKU、basicConstraints、AIA、CRL 分发点等)。几乎所有 TLS 证书都使用这套结构,读懂字段是排查证书问题的前提。

基本信息

标准RFC 5280
必含字段version、serialNumber、signature、issuer、validity、subject、subjectPublicKeyInfo
v3 扩展SAN、KeyUsage、EKU、basicConstraints、AIA、CRLDP
签名CA 用私钥对证书主体部分签名,校验方用 CA 公钥验证
查看方式openssl x509 -in cert.pem -noout -text
格式PEM(文本,Base64)与 DER(二进制)两种常见编码

典型使用场景

  • 部署核对:确认证书主体与 SAN 覆盖所有对外域名
  • 信任链分析:通过 issuer 与 AIA 字段定位中间证书来源
  • 用途校验:确认 EKU 包含 serverAuth 或 clientAuth
  • 合规检查:核对有效期、密钥长度与签名算法是否符合要求
  • 故障定位:先看证书本体,再考虑网络与配置问题

查看证书字段

查看证书字段
# 输出全部字段与扩展,排错首选
openssl x509 -in example.com.crt -noout -text | head -40
# 只看关键项:主体、签发者、序列号与有效期
openssl x509 -in example.com.crt -noout -subject -issuer -serial -dates
# 单独看域名列表与用途扩展
openssl x509 -in example.com.crt -noout -ext subjectAltName -ext extendedKeyUsage
# 从线上服务抓取证书再解析,用于核对实际生效内容
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -dates

关键字段与用途

字段含义排查用途
serialNumberCA 分配的序列号标识证书,注意不同 CA 之间可能重复
issuer / subject签发者与主体确认签发关系与域名身份
validity生效与到期时间过期即校验失败,注意时区与 UTC
SAN主题备用名称现代客户端据此匹配域名
keyUsage / EKU密钥用途与扩展用途用途不符会导致客户端拒绝
AIA / CRLDP中间证书与吊销信息地址链构建与吊销校验的来源
证书本身不包含私钥:私钥泄露或证书需要轮换时,要替换的是「证书与私钥这一对材料」,而不是只换证书文件。部署时务必核对两者是否匹配,可用 openssl 分别输出公钥指纹比对。
已废弃版本的证书(v1/v2)缺少扩展字段,不同校验器对它们的处理存在差异,容易出现「某些客户端可用、另一些不可用」的现象。看到遗留证书时优先换新,而不是逐个客户端调试。

易错点

  • 把序列号当成跨 CA 的全局唯一标识:不同 CA 的序列号可能重复,不能作为唯一键使用
  • 忽略 SAN 只核对 CN:现代客户端只看 SAN,导致「看着写对了域名却报不匹配」
  • 忽略 EKU 或 KeyUsage:用途不符时客户端会拒绝证书,尤其在 mTLS 中常见
  • 用过期证书排障:有效期问题会掩盖配置问题,先确认时间再继续排查
  • 只看本地文件不核对线上证书:负载均衡与 CDN 上运行的可能是另一张证书

数据来源与参考

  • RFC 5280 §4(证书结构)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌