首页/网络/协议速查/X.509 证书关键字段

X.509 证书关键字段

排证书问题看懂这几个字段就够:Subject、SAN(真正生效的域名列表)、Validity、Key Usage/EKU、AKI/SKI、序列号。

协议速查网络更新于 2026-10-13

证书关键字段

X.509 证书本质上是一组带签名的字段,排查问题只需要看几个关键的:Subject 里的通用名、真正决定域名是否匹配的 SAN、有效期、用途限制,以及链上的签发者标识。现代校验一律以 SAN 为准,Subject CN 只是历史遗留字段;链的构建依赖签发者名称与 AKI/SKI 标识。

基本信息

主体Subject,含 CN(通用名)、O(组织)、OU(部门)
生效域名subjectAltName,可包含多个 DNS 名与 IP 地址
有效期Not Before / Not After,时间以 UTC 记录
用途限制Key Usage 与 Extended Key Usage,如 serverAuth、clientAuth
链标识Authority Key Identifier 与 Subject Key Identifier
指纹SHA-256 fingerprint,用于比对部署的是哪一份证书

典型使用场景

  • 线上报证书不受信任:先确认链是否完整、SAN 是否覆盖访问的域名
  • 证书续签后核对指纹,避免灰度机器上仍挂着旧证书
  • 排查「只在部分客户端报错」:EKU 或签名算法不被老客户端接受
  • 做资产审计:批量导出到期时间与 SAN 列表,建立到期提醒
  • 网关替换证书后握手失败,确认证书与私钥是否配套
  • 合规检查:确认签名算法、密钥长度与曲线是否符合规范要求

最小示例

最小示例
openssl x509 -in cert.pem -noout -text | head -60          # 完整字段
openssl x509 -in cert.pem -noout -dates -subject -issuer  # 有效期与主体、签发者
openssl x509 -in cert.pem -noout -ext subjectAltName      # 只看生效域名
openssl x509 -in cert.pem -noout -fingerprint -sha256     # 指纹比对
openssl x509 -noout -modulus -in cert.pem | openssl md5   # 证书公钥模数
openssl rsa -noout -modulus -in key.pem | openssl md5     # 私钥模数,两者应一致

字段怎么读

字段含义易错点
Subject CN旧式域名字段现代浏览器只看 SAN,CN 写对也可能不生效
SAN生效域名列表漏配域名即不匹配,IP 访问也要单独写进 SAN
Validity起止时间时区与时钟偏差会造成过期误判
EKU用途限制缺 serverAuth 会被客户端拒绝握手
AKI / SKI链匹配标识缺失会导致链构建失败
Signature Algorithm签名算法老旧算法在合规场景会被判不合格
多域名与通配证书的正确性一律以 SAN 为准:*.example.com 不覆盖裸域 example.com,也不覆盖 a.b.example.com,通配符只匹配一级。
私钥与证书不配套时握手会在服务端直接失败,日志通常只给一句含糊的 key values mismatch,先用模数比对确认再排其他方向。

易错点

  • 通配符只匹配一级:*.example.com 既不能用于 a.b.example.com,也不能用于裸域 example.com,签错只能重新签发
  • 只换服务器证书不更新中间证书:链不完整,部分客户端报 unknown_ca,而默认不校验的命令行工具会「看起来正常」
  • 依靠 Subject CN 做域名判断:现代校验只认 SAN,CN 写对了也无效,还会浪费大量排查时间
  • 忽略系统时钟:容器或设备时间漂移会让证书被判为未生效或已过期,排查证书前先校准时间
  • 把证书公钥长度当成唯一安全指标:密钥长度、曲线、签名算法与私钥保管方式共同决定安全强度

数据来源与参考

  • RFC 5280 §4.1/4.2
  • RFC 6125(域名验证)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌