不喜欢广告? 无广告 今天

SSL/TLS 证书——那些字段和到期日期实际上意味着什么

更新于

TLS证书只是带有过期日期和信任链的结构化数据。这里详细说明了每个字段的实际含义、证书为何会过期,以及如何在不使用命令行的情况下解码一个证书。

SSL/TLS证书——那些字段和有效期实际上意味着 1
广告 移除?

在某个时刻,你可能曾盯着浏览器中的小锁图标,点击“查看证书”,然后面对一长串看似重要却毫无解释的字段:“主题备用名称”、“OCSP”、“SHA-256 加 RSA 加密”。你关闭了对话框。证书是绿色的。这已经足够了。

直到它过期为止。在周五午夜。在生产环境中。

本文将逐项详细解析TLS证书内部的各个字段,以便下次你需要排查证书问题时,能够清楚地理解你所看到的内容。

证书本质上只是一个经过签名的文档

去掉繁文缛节,TLS证书实际上是一份包含若干事实的文本文档——谁拥有这个域名、使用哪个公钥、证书何时过期——这些内容已由证书颁发机构(CA)通过密码学方式签名。CA的签名是浏览器信任它的关键。其余内容只是注释。

底层格式称为X.509。它于1988年定义,经过多次修订,目前由 RFC 5280规定。这就是浏览器证书详情对话框看起来像是由那些把1988年视为近期的人设计出来的原因。

关键字段详解

以下是您在真实证书中会看到的字段的注释分解。下面的PEM数据是示例(并非实际证书):

Certificate:
  Data:
    Version: 3 (0x2)                          # Always v3 for modern certs
    Serial Number:                             # Unique ID issued by the CA
      04:b3:c2:...(truncated)
    Signature Algorithm: sha256WithRSAEncryption  # Hash + key algorithm used to sign
    Issuer:
      C  = US                                 # Country
      O  = Let's Encrypt                      # Organization (the CA)
      CN = R11                                # Common Name of the issuer
    Validity:
      Not Before: Apr  1 00:00:00 2026 GMT    # Cert isn't valid before this date
      Not After : Jun 30 23:59:59 2026 GMT    # Cert is invalid after this date
    Subject:
      CN = iotools.cloud                      # Domain this cert was issued for
    Subject Public Key Info:
      Public Key Algorithm: rsaEncryption
      Public-Key: (2048 bit)                  # RSA key size
    X509v3 extensions:
      Subject Alternative Names:
        DNS:iotools.cloud                     # All domains this cert covers
        DNS:www.iotools.cloud
      Key Usage: Digital Signature, Key Encipherment
      Extended Key Usage: TLS Web Server Authentication
      Basic Constraints: CA:FALSE             # This is NOT a CA cert
      Authority Key Identifier: ...           # Fingerprint of issuer's key
      Subject Key Identifier: ...             # Fingerprint of this cert's key
      Certificate Policies: ...
        CPS: http://cps.letsencrypt.org
      OCSP: http://r11.o.lencr.org           # Where to check revocation status

通用名称(CN)

最初用于指定证书覆盖的域名字段。您仍然会看到它被填充—— CN = example.com ——但浏览器已大多不再依赖它。自2000年以来,主题备用名称(SAN)扩展是域名匹配的权威字段。CN目前基本上属于遗留状态;如果存在SAN,浏览器将仅使用SAN。

主题备用名称(SAN)

这是证书实际保护的域名列表。一个证书可以覆盖数十个名称——包括通配符条目(*.example.com)、精确名称,甚至IP地址。多域名证书(有时称为SAN证书或UCC证书)是标准做法。CA根据该列表签发证书,浏览器会将您访问的主机名与该列表进行匹配。

通配符的一个特点 不能 是覆盖子子域名。 *.example.com 覆盖了 app.example.com 但不提供 api.v2.example.com许多人都曾因此付出过代价。

有效期

两个时间戳: 生效时间之前到期时间之后。证书在该时间窗口之外无效——在开始日期之前或过期之后。两者均为UTC时间。

证书的最大有效期正在稳步缩短。2015年最大有效期为3年,2018年降至2年。2020年,苹果单方面开始拒绝有效期超过398天(约13个月)的证书,迫使浏览器厂商和CA跟进。到2026年,CA/Browser论坛已批准了一项路线图,计划将有效期缩短至2027年的47天。

支持较短有效期的论点是合理的:如果私钥被泄露,短有效期的证书能限制影响范围。然而,实际操作中,较短有效期会增加对自动续期流程准确性的压力。2015年,Let's Encrypt的90天证书因同样的原因引发争议;如今,90天证书已成为最佳实践,自动续期也被视为必要。

颁发者及信任链

发行人 字段名称指代签署该证书的实体。对于大多数公共网站,这通常是中间CA(如Let's Encrypt的R11),而非根CA。根CA签署中间CA证书,中间CA签署终端实体证书(即您的服务器所展示的证书)。这种链式结构存在是因为根CA的私钥被保存在离线的硬件安全模块(HSM)中,无法将其暴露用于每年签署数百万个域名证书。

当浏览器验证您的证书时,它会沿着链向上追溯:您的证书 → 中间CA → 根CA。如果根CA在浏览器的信任存储中,链就验证成功;如果链中的任何证书缺失、已过期或使用了被撤销的密钥,则验证失败。

这就是最常见的TLS配置错误:忘记同时提供中间证书与终端证书。您的浏览器可能缓存了中间证书并表现正常,而其他客户端——如curl、移动应用、向外发出API调用的服务器——则会因无法建立通往根CA的路径而失败。

签名算法

该字段包含两个部分:用于摘要证书数据的哈希函数,以及用于签名该摘要的密钥算法。 sha256WithRSAEncryption 表示使用SHA-256哈希和RSA签名。 ecdsa-with-SHA256 表示使用SHA-256哈希和ECDSA签名。

SHA-1签名在2017年被浏览器弃用,现在会导致严重错误。MD5签名更早被弃用,现已基本消失。如果您正在运行任何内部签发SHA-1证书的系统,请在浏览器更新前更新您的CA配置。

ECDSA(通常为P-256或P-384)在等效安全级别下比RSA产生更小的密钥和签名。一个256位的EC密钥大致相当于一个3072位的RSA密钥。权衡在于:RSA在与非常老旧的客户端兼容性方面更广泛;ECDSA更高效且更轻量。现代部署通常同时配置两者,由TLS协商决定使用哪一个。

密钥用途和扩展密钥用途

密钥用途 是一个位掩码,指定了密钥被允许执行的操作:签名数据、加密数据、为其他证书签名(仅限CA)。 扩展密钥用途 对上述用途进行具体化: TLS Web Server Authentication 允许证书用于HTTPS。 TLS Web Client Authentication 用于mTLS客户端证书。 Code Signing 用于软件签名证书。

如果您试图将证书用于其声明密钥用途之外的目的,现代TLS实现将拒绝该证书。您不能将代码签名证书用于Web服务器,即使域名匹配也是如此。

基本约束:CA:FALSE

该字段指定证书是否可以用于签署其他证书。 CA:FALSE 表示它不能——这是一个终端实体证书。 CA:TRUE 表示这是一个CA证书,允许签署链中的其他证书。

pathLenConstraint 有时会伴随此字段出现,告知您允许多少个该证书之下的中间CA。根CA通常设置此值以限制链的深度。

OCSP与撤销

证书中的OCSP(在线证书状态协议)URL告知客户端在证书过期前检查其是否被撤销。撤销发生在私钥泄露或证书错误签发时。

实际上,浏览器的OCSP检查有着复杂的历史。Chrome多年前已停止进行实时OCSP检查,转而使用CRL集(预先获取的被撤销的高价值证书列表)。Firefox仍支持OCSP,但默认为软失败,即当OCSP服务器不可达时,证书被视为有效。总体效果是:对于大多数证书,撤销在实际应用中是理论性的。这也是支持短有效期证书的一个理由——在47天的有效期内,证书很快过期,因此撤销的重要性降低。

证书为何要过期

过期并非官僚摩擦。它是限制被泄露凭证有效时间的机制。如果选择永久凭证,就会导致我们出现SHA-1证书和几十年前仍在生产环境中的CA密钥,这正是2010年行业状况。

权衡在于操作层面:较短的有效期要求可靠的自动化流程。如果您的续期依赖于系统管理员的日历提醒,最终您会在生产环境中过期。正确的做法是通过ACME(Let's Encrypt协议)或CA API实现自动续期,并设置监控系统,在到期前几周发出警报,而不是在到期当晚才提醒。

无需命令行即可阅读证书

检查证书的标准方法是 openssl x509 -in cert.pem -text -noout,其输出格式适合那些阅读RFC 5280时感到轻松的人。如果您希望获得无需记忆openssl命令行参数的信息, SSL/TLS 证书解码器X.509 Certificate Parser 在iotools.cloud上,两者都接受PEM编码的证书,并返回所有字段并按标签组织——在您凌晨时分调试链问题时,如果openssl的长篇大论无法帮助,这种格式就非常有用。

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 移除?
广告 移除?
广告 移除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 移除?