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