0Pricing
Cloud & IT Cert Prep · 课时

X.509 证书结构

查看数字证书中的字段——使用者、颁发者、有效期、公钥和扩展——并了解每个字段的含义。

X.509 证书结构 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。

什么是 X.509 证书

X.509 证书是一种标准化数字文档,用于将公钥绑定到某个身份。X.509 标准(定义于 RFC 5280)规定了全球数字证书所使用的格式、字段和扩展。每张 TLS/HTTPS 证书、S/MIME 电子邮件证书、代码签名证书以及客户端身份验证证书都遵循 X.509 格式。了解 X.509 证书的结构,有助于您读取证书信息、诊断证书错误,并就证书部署和验证做出明智决策。

# View an X.509 certificate in human-readable form
openssl x509 -in certificate.pem -noout -text

# Or view a website's certificate directly
openssl s_client -connect example.com:443 2>/dev/null | \
  openssl x509 -noout -text

Version、Serial Number 和 Algorithm

X.509 证书的前几个字段用于确定其基本身份。Version:X.509 v3 是当前标准(v3 增加了扩展)。Serial Number:由签发证书的 CA 分配的唯一整数,用于标识这张特定证书;在 CRL(撤销列表)中使用它可以撤销单张证书。Signature Algorithm:指定 CA 用于签署证书的算法(例如 sha256WithRSAEncryption 或 ecdsa-with-SHA256)。此字段会出现两次:一次位于 TBSCertificate 中,另一次位于外层签名封装中;两者必须匹配。

# Certificate header fields
# Version: 3 (v3 = supports extensions)
# Serial Number:
#     30:4b:7e:bf:36:e3:46:a8
# Signature Algorithm: sha256WithRSAEncryption

# The serial number is used for revocation:
# CRL lists serial numbers of revoked certificates from this CA

Issuer 和 Subject 字段

证书中有两个最重要的字段,用于确定涉及的各方。Issuer 字段标识签署证书的 CA(例如 CN=DigiCert Global CA G2, O=DigiCert Inc, C=US)。Subject 字段标识证书签发给的实体(例如 CN=*.example.com, O=Example Corp, C=US)。对于 TLS 证书,Subject 的通用名称(CN)或Subject Alternative Name(SAN)扩展会指定证书对哪些域名有效。浏览器会将请求的主机名与这些字段进行匹配。

# Extract Issuer and Subject
openssl x509 -in cert.pem -noout -subject -issuer
# subject=CN = *.google.com, O = Google LLC, L = Mountain View, ST = California, C = US
# issuer=CN = GTS CA 1C3, O = Google Trust Services LLC, C = US

# Check Subject Alternative Names (critical for hostname validation)
openssl x509 -in cert.pem -noout -ext subjectAltName
# DNS:*.google.com, DNS:google.com

有效期:notBefore 和 notAfter

有效期定义证书何时处于有效状态。它由两个时间戳组成:notBefore(在此日期之前证书尚未生效)和 notAfter(超过此日期后证书已过期)。TLS 客户端会验证当前时间是否处于此时间范围内。在有效期之外出示证书会导致浏览器报告证书错误,因此必须续期。现代最佳实践是签发短生命周期证书(Let's Encrypt 使用 90 天),以限制私钥在签发日至到期日期间遭到泄露时的风险。

# Check certificate expiry dates
openssl x509 -in cert.pem -noout -dates
# notBefore=Jan  1 00:00:00 2026 GMT
# notAfter=Mar 31 23:59:59 2026 GMT

# Check how many days until expiry
echo | openssl s_client -connect example.com:443 2>/dev/null | \
  openssl x509 -noout -enddate
# notAfter=Jun 15 12:00:00 2026 GMT

公钥字段

证书的核心载荷是 Subject Public Key Info 字段,其中包含经过认证的公钥,并指定该公钥所使用的算法。对于 RSA 证书,此字段包含 RSA 公钥的模数和指数,以及其位数(2048、4096)。对于 ECC 证书,此字段包含曲线名称(例如 prime256v1)和公钥点。CA 不会生成这对密钥;证书请求者会自行生成密钥对,并仅在Certificate Signing Request(CSR)中提交公钥。

# Generate a key pair and CSR (Certificate Signing Request)
# First, generate the private key
openssl genrsa -out server.key 2048

# Create a CSR containing the public key and subject info
openssl req -new -key server.key -out server.csr \
  -subj '/CN=www.example.com/O=Example Corp/C=US'

# The CSR is sent to the CA for signing
# The CA returns the signed X.509 certificate
# Private key NEVER leaves your possession

X.509 v3 扩展

X.509 v3 引入了扩展,显著增强了证书的功能。扩展可以是关键扩展(无法处理该扩展的客户端必须拒绝证书),也可以是非关键扩展(无法理解时可以忽略)。主要扩展包括:Subject Alternative Name(SAN)——证书涵盖的其他域名或 IP;Key Usage——限制密钥可执行的操作(数字签名、密钥加密);Extended Key Usage——进一步限制用途(TLS 服务器身份验证、客户端身份验证、代码签名);以及 Basic Constraints——指示 Subject 是否为 CA。

# View X.509 v3 extensions
openssl x509 -in cert.pem -noout -text | grep -A 20 '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 Basic Constraints: critical
#   CA:FALSE

Subject Alternative Name(SAN)与 Common Name 的区别

过去,Subject 中的Common Name(CN)字段用于指定主要域名。现代证书改用 Subject Alternative Names(SANs),因为浏览器已根据 RFC 2818 弃用基于 CN 的匹配,转而支持 SAN。SAN 允许一张证书涵盖多个域名(多 SAN 证书),或涵盖某个域的所有子域名(通配符证书:*.example.com)。SAN 通配符只能涵盖一级子域名——*.example.com 可以涵盖 www.example.com,但不能涵盖 sub.www.example.com。

CRL Distribution Point 和 OCSP 扩展

两个关键扩展会告知客户端如何在证书到期前检查其是否已被撤销。CRL Distribution Points(CDP):包含可下载 CA 的 Certificate Revocation List 的 URL。Authority Information Access(AIA):包含 CA 的 OCSP(Online Certificate Status Protocol)响应程序的 URL,用于实时检查撤销状态。现代客户端更倾向于使用 OCSP,而不是下载 CRL,因为 CRL 可能是很大的文件。CA 对 OCSP 响应所做的数字签名可确保客户端获得真实的撤销状态信息。

# Check OCSP status of a certificate
openssl ocsp -issuer intermediate_ca.pem \
  -cert server_cert.pem \
  -url http://ocsp.digicert.com \
  -text
# Response shows: good, revoked, or unknown
# server_cert.pem: good
# This Update: Jun 21 00:00:00 2026 GMT

证书格式:PEM、DER、PFX

X.509 证书有多种编码格式,您在实际工作中都会遇到。PEM(Privacy Enhanced Mail):经过 Base64 编码的 DER,外层包有 -----BEGIN CERTIFICATE----- 标头。它便于人类阅读,常用于 Linux/Apache/nginx。DER(Distinguished Encoding Rules):二进制格式。用于 Java 应用和某些 Windows 场景。PFX/PKCS#12:一种容器格式,将证书、证书链和私钥捆绑在一个受密码保护的文件中。用于 Windows IIS,以及导出包含私钥的证书。P7B/PKCS#7:仅包含证书链,不包含私钥,用于 Windows 证书存储。

# Convert between certificate formats
# PEM to DER
openssl x509 -in cert.pem -outform DER -out cert.der

# DER to PEM
openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem

# Export certificate + private key to PFX (for Windows IIS)
openssl pkcs12 -export -in cert.pem -inkey private.key \
  -certfile chain.pem -out cert.pfx -passout pass:ExportPassword

Certificate Transparency(CT Logs)

Certificate Transparency(CT)是一种框架,要求 CA 将所有已签发的证书记录到可公开审计的日志中。这样,任何人都可以监控是否有人为其域名签发了未经授权的证书。Chrome 和 Safari 要求 TLS 证书包含在 CT 日志中。SCT(Signed Certificate Timestamp)是证书已记录到日志中的证明,它可以嵌入证书中,也可以通过 TLS 扩展提供。CT 日志能够快速暴露错误签发的证书——如果 CA 错误地为您的域名签发了证书,您会在 crt.sh 等日志中看到它,攻击者还来不及滥用该证书。

# Search for all certificates issued for a domain using crt.sh
# This would be done via browser or API:
# https://crt.sh/?q=example.com

# Check CT log inclusion in a certificate
openssl x509 -in cert.pem -noout -text | grep -A 5 'CT Precertificate'
# X509v3 extension: CT Precertificate SCTs (critical)
#   Signed Certificate Timestamp:
#     Version: v1 (0x0)
#     Log ID: A4:B9...

CA 对证书的签名

X.509 证书的最后一个组成部分是 CA 的数字签名。CA 会对所有证书数据(TBSCertificate)进行哈希处理,然后使用自己的私钥对该哈希值签名。正是这一签名使证书值得信任——任何人都可以使用 CA 的公钥验证它,而该公钥位于 CA 自己的证书中。所使用的签名算法(列在签名字段中)必须与证书前面指定的算法一致。签名后对证书进行任何修改都会使签名失效,从而确保了证书的完整性。

# Verify that a certificate was signed by a specific CA
openssl verify -CAfile ca_chain.pem server_cert.pem
# server_cert.pem: OK

# If the signature is invalid or the chain is broken:
# server_cert.pem: C = US, O = Example, CN = www.example.com
# error 20 at 0 depth lookup: unable to get local issuer certificate

快速检查

测试您对本课 CompTIA Security+(SY0-701)概念的理解。

课程回顾

本课您学到了:X.509 证书包含版本、序列号、签发者、Subject、有效期、公钥和 v3 扩展;SAN 扩展控制证书涵盖哪些主机名;CDP 和 AIA 扩展指向撤销检查端点;而 CT 日志提供证书签发的公开审计记录。接下来我们将学习证书生命周期与撤销。

常见问题解答

「X.509 证书结构」课时是免费的吗?

是的 — 「X.509 证书结构」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。

「X.509 证书结构」这节课中我会学到什么?

查看数字证书中的字段——使用者、颁发者、有效期、公钥和扩展——并了解每个字段的含义。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cloud & IT Cert Prep 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「X.509 证书结构」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?

能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 证书颁发机构与信任链
  2. X.509 证书结构
  3. 证书生命周期与吊销
  4. PKI 使用场景:HTTPS、S/MIME 与代码签名
← 返回 Cloud & IT Cert Prep