跳转到主要内容

数字证书

本文约需 2 分钟阅读

数字证书是一种电子身份凭证,由可信的第三方机构 (证书颁发机构) 证明公钥的所有者就是其本人。它是 Web 浏览器在 HTTPS 连接时验证服务器身份机制的根基,支撑着 SSL/TLS 通信、电子邮件签名、代码签名等互联网上的信任基础。作为 PKI (公钥基础设施) 的核心要素,它是现代安全基础设施中不可或缺的存在。

X.509 标准的结构

数字证书的事实标准是 ITU-T 制定的 X.509 标准。目前广泛使用的是版本 3,由以下字段构成。

┌─────────────────────────────────┐
X.509 v3 证书
├─────────────────────────────────┤
版本: v3
序列号: 唯一标识符
签名算法: SHA-256 with RSA
颁发者 (Issuer): 证书颁发机构的 DN
有效期: 开始日期 - 结束日期
主体 (Subject): 所有者的 DN
公钥信息: RSA 2048bit / ECC P-256
扩展区域: SAN, Key Usage, CRL 分发点
├─────────────────────────────────┤
证书颁发机构的数字签名
└─────────────────────────────────┘

扩展区域中的 SAN (Subject Alternative Name) 尤为重要,一张证书即可覆盖多个域名和 IP 地址。通配符证书 (*.example.com) 也利用了这一机制。

DV、OV、EV 证书的区别

种类验证内容颁发时间费用用途
DV (Domain Validation)仅域名所有权数分钟免费 - 数千日元个人网站、博客
OV (Organization Validation)域名 + 组织的真实存在性数日数万日元 / 年企业网站、API
EV (Extended Validation)域名 + 组织 + 法律实体存在性1 - 2 周10 万日元以上 / 年金融机构、电商网站

过去 EV 证书会在浏览器地址栏中以绿色显示组织名称,但自 2019 年起,Chrome 和 Firefox 已废除这一显示。也曾出现钓鱼网站取得 EV 证书的案例,因此「EV = 安全」这种简单的等式已不再成立。在当前的实务中,绝大多数情况下 DV 证书已足够。

Let's Encrypt 推动免费 SSL 的普及

Let's Encrypt 是由 ISRG (Internet Security Research Group) 于 2015 年发起的证书颁发机构,可免费且自动地颁发 DV 证书。借助基于 ACME 协议的自动续期机制,它大幅缓解了因证书过期导致网站宕机这一运维难题。截至 2024 年,全部 HTTPS 网站中约有 30% 使用 Let's Encrypt 的证书,为提升整个 Web 的加密率做出了决定性贡献。

证书的吊销 - CRL 与 OCSP

由于私钥泄露或组织变更,有时需要在有效期前使证书失效。确认吊销状态有两种方式。

CRL (Certificate Revocation List)
  • 证书颁发机构定期公开失效证书的列表
  • 客户端下载整个列表
  • 列表膨胀会导致通信成本增加
  • 更新间隔存在延迟
OCSP (Online Certificate Status Protocol)
  • 实时查询单个证书的状态
  • 通信量小且高效
  • 依赖 OCSP 服务器的可用性
  • 通过 OCSP Stapling 缓解性能问题

证书透明度 (Certificate Transparency)

Certificate Transparency (CT) 是 Google 于 2013 年提出的机制,它将所有已颁发的证书记录到公开日志中,使得可以检测出不正当证书的颁发。当证书颁发机构错误地 (或恶意地) 颁发不正当证书时,通过监控 CT 日志即可及早发现。自 2018 年起,Chrome 实施了不信任未登记于 CT 日志的证书的策略,这已成为事实上的必备要求。理解公钥加密的原理,可以让证书的验证流程更加清晰。

一个常见的误解是认为「HTTPS = 安全的网站」,但 DV 证书仅证明域名的所有权。钓鱼网站同样可以取得正规的 DV 证书,因此「是否使用 HTTPS」与「网站是否可信」是两回事。

加密的基础知识在加密基础的文章中有详细讲解,浏览器安全在浏览器密码安全性的文章中有详细说明。也请一并参阅钓鱼防护SSL/TLS 与证书技术书 (Amazon)中也能找到。

相关术语

这篇文章对您有帮助吗?

XHatena