X.509证书结构详解:看懂证书里的每个字段
最近有朋友问:证书文件里那一长串Base64编码到底装的是什么?证书的字段都代表什么意思?部署证书时怎么检查证书是否正确?这篇就把X.509证书结构详细讲一下,帮你真正看懂证书。
什么是X.509
X.509 是公钥证书的国际标准格式(RFC 5280),定义了证书的内部结构。所有SSL/TLS证书都遵循X.509标准。
X.509的发展历史:
- •X.509 v1(1988年):基础版本
- •X.509 v2(1993年):增加唯一标识符
- •X.509 v3(2008年):增加扩展字段(当前主流版本)
现在用的都是X.509 v3,支持丰富的扩展字段。
证书的整体结构
一个X.509证书包含两大部分:
- Certificate(证书本体):可见的证书信息
- Signature Algorithm + Signature Value:CA的签名
Certificate部分又包含:
- •Version:版本号
- •Serial Number:序列号
- •Signature Algorithm:签名算法
- •Issuer:颁发者
- •Validity:有效期
- •Subject:使用者
- •Subject Public Key Info:公钥信息
- •Extensions:扩展字段
用OpenSSL查看证书
查看证书完整内容:
openssl x509 -in cert.pem -text -noout
输出类似:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1234567890 (0x499602d2)
Signature Algorithm: ecdsa-with-SHA256
Issuer: CN=ZeroSSL ECC Domain Secure Site CA, O=ZeroSSL, C=AT
Validity
Not Before: Jan 1 00:00:00 2026 GMT
Not After : Mar 31 23:59:59 2026 GMT
Subject: CN=example.com
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub: 04:5a:3b:8e:...
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
X509v3 Subject Alternative Name:
DNS:example.com, DNS:www.example.com
X509v3 Authority Key Identifier:
keyid:A8:4A:6A:63:A4:5B...
X509v3 Subject Key Identifier:
A8:4A:6A:63:A4:5B...
Signature Algorithm: ecdsa-with-SHA256
30:45:02:20:34:8b:...
用在线工具查看:把证书内容粘贴到 证书查看工具,自动解析显示所有字段。
Version(版本号)
字段:证书的X.509版本
取值:
- •0 = v1
- •1 = v2
- •2 = v3(现代证书都是这个)
作用:决定证书支持哪些字段。v3支持扩展字段,是当前主流。
Serial Number(序列号)
字段:CA给每个证书分配的唯一编号
特点:
- •每个CA内部唯一
- •用于撤销时定位证书
- •长度通常20字节(160位)
- •十进制或十六进制显示
作用:
- •证书撤销(CRL/OCSP)用序列号定位
- •CA内部审计追踪
查看序列号:
openssl x509 -in cert.pem -serial -noout
# 输出 serial=499602D2
Signature Algorithm(签名算法)
字段:CA用什么算法给证书签名
常见取值:
- •
sha256WithRSAEncryption:RSA签名+SHA256哈希 - •
ecdsa-with-SHA256:ECDSA签名+SHA256 - •
sha384WithRSAEncryption:RSA签名+SHA384 - •
ed25519:Ed25519签名
作用:验证证书签名时使用对应算法。
Issuer(颁发者)
字段:谁签发的这个证书
包含子字段:
- •CN(Common Name):CA名称
- •O(Organization):组织名
- •C(Country):国家代码
示例:
Issuer: CN=ZeroSSL ECC Domain Secure Site CA, O=ZeroSSL, C=AT
作用:标识证书的签发者,用于追溯证书链。
Validity(有效期)
字段:证书的有效时间范围
包含:
- •Not Before:生效时间
- •Not After:失效时间
示例:
Validity
Not Before: Jan 1 00:00:00 2026 GMT
Not After : Mar 31 23:59:59 2026 GMT
重要:
- •证书过期后浏览器会报警告
- •免费证书有效期90天,付费证书1-2年
- •续费要在过期前30天进行
用 证书查看工具 可以查看证书剩余天数。
Subject(使用者)
字段:证书的所有者信息
DV证书的Subject很简单:
Subject: CN=example.com
OV/EV证书的Subject更丰富:
Subject: CN=example.com, O=Example Inc, OU=IT Department,
L=Beijing, ST=Beijing, C=CN,
businessCategory=Private Organization,
serialNumber=1234567890
子字段含义:
- •CN(Common Name):主域名
- •O(Organization):组织名
- •OU(Organizational Unit):部门
- •L(Locality):城市
- •ST(State/Province):省/州
- •C(Country):国家
- •emailAddress:邮箱
现代证书的CN:现代浏览器不再看CN字段,而是看SAN扩展。CN字段保留只是为了兼容老设备。
Subject Public Key Info(公钥信息)
字段:证书包含的公钥
包含:
- •Public Key Algorithm:公钥算法
- •Public Key:公钥内容
示例:
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub: 04:5a:3b:8e:...
常见算法:
- •
rsaEncryption:RSA公钥 - •
id-ecPublicKey:EC公钥 - •
id-Ed25519:Ed25519公钥
Extensions(扩展字段)
最重要的部分,X.509 v3的核心特性。
Key Usage(密钥用法)
字段:公钥的用途
常见值:
- •
Digital Signature:数字签名 - •
Key Encipherment:密钥加密 - •
Data Encipherment:数据加密 - •
Key Agreement:密钥协商
SSL证书通常包含:Digital Signature, Key Encipherment
Extended Key Usage(扩展密钥用法)
字段:公钥的具体应用场景
常见值:
- •
TLS Web Server Authentication:Web服务器认证 - •
TLS Web Client Authentication:Web客户端认证 - •
Code Signing:代码签名 - •
Email Protection:邮件保护
SSL证书包含:TLS Web Server Authentication, TLS Web Client Authentication
Subject Alternative Name(SAN,使用者可选名称)
字段:证书覆盖的所有域名/IP
最重要的扩展字段之一。现代浏览器只看SAN,不看CN。
示例:
X509v3 Subject Alternative Name:
DNS:example.com, DNS:www.example.com, DNS:*.example.com
类型:
- •
DNS:域名 - •
IP Address:IP地址 - •
email:邮箱 - •
URI:统一资源标识符
用 证书查看工具 查看证书的SAN列表,确认覆盖的域名是否符合预期。
Basic Constraints(基本约束)
字段:证书是否是CA证书
值:
- •
CA:TRUE:是CA证书(可以签发其他证书) - •
CA:FALSE:不是CA证书(终端证书)
SSL证书应该是 CA:FALSE,否则是配置错误。
Authority Key Identifier(颁发者密钥标识)
字段:签发此证书的CA的公钥标识
作用:构建证书链时用于匹配中间证书。
Subject Key Identifier(使用者密钥标识)
字段:本证书的公钥标识
作用:被签发的证书的AKI匹配本证书的SKI。
CRL Distribution Points(CRL分发点)
字段:证书撤销列表(CRL)的查询URL
作用:浏览器或应用查询证书是否被撤销。
Authority Information Access(AIA,颁发者信息访问)
字段:CA信息访问点
包含:
- •
OCSP:OCSP查询URL(在线证书状态查询) - •
caIssuers:中间证书下载URL
作用:浏览器自动下载缺失的中间证书。
Certificate Policies(证书策略)
字段:证书的验证类型和策略
包含:
- •Policy Identifier:策略OID
- •CPS:证书实践声明URL
作用:标识证书是DV、OV还是EV。
Signature(签名)
字段:CA对证书内容的数字签名
作用:验证证书是否被篡改。
验证过程:
- 用CA的公钥解密签名
- 计算证书内容的哈希值
- 比对两个值,相同则证书有效
不同证书类型的X.509差异
| 字段 | DV证书 | OV证书 | EV证书 |
|---|---|---|---|
| Subject | 只有CN | 含O、OU | 含完整企业信息 |
| SAN | 包含 | 包含 | 包含 |
| Certificate Policies | DV OID | OV OID | EV OID |
| 验证时间 | 几分钟 | 1-3天 | 3-7天 |
| 浏览器显示 | 绿锁 | 绿锁 | 绿锁+公司名 |
证书指纹
证书指纹是证书内容的哈希值,用于唯一标识证书。
常见算法:
- •SHA-1指纹:40个字符(已不推荐用于验证)
- •SHA-256指纹:64个字符(推荐)
查看指纹:
# SHA-1
openssl x509 -in cert.pem -fingerprint -sha1 -noout
# SHA-256
openssl x509 -in cert.pem -fingerprint -sha256 -noout
作用:
- •对比证书是否相同
- •证书透明度日志(CT log)查询
- •证书撤销检查
实战:检查证书信息
部署证书前,先检查关键信息:
# 1. 查看证书有效期
openssl x509 -in cert.pem -dates -noout
# 2. 查看证书的Subject
openssl x509 -in cert.pem -subject -noout
# 3. 查看证书的Issuer
openssl x509 -in cert.pem -issuer -noout
# 4. 查看SAN域名列表
openssl x509 -in cert.pem -ext subjectAltName -noout
# 5. 查看完整信息
openssl x509 -in cert.pem -text -noout
或用在线工具:证书查看工具 一键解析所有字段。
常见问题
Q:证书的CN字段和SAN有什么区别?
A:CN是主域名,SAN是所有覆盖的域名列表。现代浏览器只看SAN,CN保留是为了兼容。
Q:证书序列号有什么用?
A:用于撤销证书时定位。OCSP查询用序列号判断证书是否被撤销。
Q:怎么判断证书是DV还是OV?
A:看Subject字段。只有CN是DV,包含O、OU等企业信息是OV。或看Certificate Policies扩展的OID。
Q:证书指纹能修改吗?
A:不能。指纹是证书内容的哈希值,改了内容指纹就变,签名也会失效。
Q:证书可以修改内容吗?
A:不能。证书被CA签名,任何修改都会让签名失效,证书就作废了。
最后
X.509证书看着复杂,核心就这几部分:
- •Subject + SAN:证书给谁用
- •Issuer:谁签发的
- •Validity:什么时候有效
- •Public Key:公钥内容
- •Extensions:扩展用法
- •Signature:CA签名
下次拿到证书,用 openssl x509 -text -noout 或 证书查看工具 看看这些字段,就能判断证书是否符合需求。希望这篇能帮你真正看懂证书。