浏览器如何一步步校验证书的有效性?一文带你搞懂!

admin 2025年5月8日09:00:25评论0 views字数 2666阅读8分53秒阅读模式

在互联网上,当你访问一个网站时,浏览器会默默完成一项至关重要的任务——校验证书的有效性。这不仅关系到你的信息安全,也直接影响到你能否正常访问网站。今天,我们就用通俗易懂的方式,带大家了解浏览器是如何一步步完成这项工作的。

浏览器如何一步步校验证书的有效性?一文带你搞懂!
浏览器验证证书过程

什么是SSL/TLS证书?

简单来说,SSL/TLS证书就像一张“身份证”,用来证明网站的真实身份。当你访问某个网站时,服务器会向浏览器发送一份证书,证明自己就是这个网站的合法拥有者。

浏览器如何一步步校验证书的有效性?一文带你搞懂!
百度的SSL/TLS证书

例如,当我们访问https://www.baidu.com时,百度的服务器会向浏览器发送一份证书。这份证书包含了以下关键信息:

  • 网站的域名(比如www.baidu.com
  • 证书的签发机构(比如“GlobalSign”)
  • 证书的有效期
  • 公钥

浏览器拿到证书后,就会开始一系列复杂但标准化的校验过程,确保这张“身份证”是真的,而不是伪造的。

第一步:检查证书的基本信息

浏览器的第一步是检查证书的基本信息是否正确。这些信息包括:

  1. 域名匹配:证书上的域名是否与当前访问的网站一致。比如,如果你访问的是www.baidu.com,但证书上写的却是www.google.com,那显然有问题。

  2. 有效期:证书是否有明确的生效日期和失效日期。如果当前时间不在证书的有效期内,那么这张证书就是无效的,浏览器会直接拒绝连接,并报net::ERR_CERT_DATE_INVALID错误。

    浏览器如何一步步校验证书的有效性?一文带你搞懂!
    不在有效期的证书
  3. 状态是否吊销:有些情况下,证书可能会被撤销(比如网站泄露了私钥)。浏览器会通过“证书吊销列表”(CRL)或“在线证书状态协议”(OCSP)来检查证书的状态。

    浏览器如何一步步校验证书的有效性?一文带你搞懂!
    吊销的证书

    :CRL离线列表会定期更新但存在延迟,OCSP在线查询实时但可能泄露隐私(可以通过OCSP Stapling方案解决),如客户端IP。

第二步:验证证书的签名

接下来,浏览器会检查证书的签名是否有效。这里的“签名”是由证书签发机构(CA,Certificate Authority)生成的,用于证明证书的真实性。

什么是CA?

CA就像是互联网上的“公证处”(可理解为“身份证”的签发机关“公安局”),负责签发数字证书。常见的CA有DigiCert、GlobalSign、Let’s Encrypt等。每张证书都包含了一个由CA签名的哈希值,浏览器会用自己的公钥算法去验证这个签名。

浏览器如何一步步校验证书的有效性?一文带你搞懂!
百度的HTTPS证书的签名值

具体步骤如下:

  1. 获取CA的公钥:浏览器会从操作系统中加载预装的可信CA根证书。这些根证书是由操作系统和浏览器内置的,确保它们是可信的。

    浏览器如何一步步校验证书的有效性?一文带你搞懂!
    MAC操作系统预置的根证书
    浏览器如何一步步校验证书的有效性?一文带你搞懂!
    Chrome预置的根证书,查看地址:chrome://certificate-manager/crscerts
  2. 解密签名:浏览器用CA的公钥解密证书中的签名,得到一个哈希值。

  3. 计算哈希值:浏览器重新计算证书中未加密部分的哈希值。

  4. 对比哈希值:如果两个哈希值一致,说明证书确实是CA签发的;如果不一致,则证书可能被篡改。

第三步:验证证书链

很多时候,证书并不是直接由顶级CA签发的,而是经过了一条“证书链”。比如,百度的证书可能是由Let’s Encrypt签发的,而Let’s Encrypt的证书又是由DigiCert签发的。

浏览器会沿着这条证书链,逐层验证每个证书的签名,直到找到一个可信的根证书为止。如果某一层证书无法验证,整个链路都会失败。

浏览器如何一步步校验证书的有效性?一文带你搞懂!
证书信任链验证流程

举例说明:

假设你访问www.example.com,服务器返回的证书链如下:

  1. example.com的证书 → 签发机构是“Let’s Encrypt”
  2. “Let’s Encrypt”的证书 → 签发机构是“DigiCert”

浏览器会先验证“Let’s Encrypt”证书的签名,然后验证“DigiCert”证书的签名。如果所有证书都通过验证,并且“DigiCert”是浏览器信任的根证书,那么整个证书链就成功了。

第四步:检查证书的扩展字段

除了基本的信息外,证书还可能包含一些扩展字段,比如:

  • 扩展验证(EV)证书:这种证书会显示更详细的公司信息,通常用于银行、支付平台等高安全性场景。
  • SAN(Subject Alternative Name)字段:允许一个证书绑定多个域名。比如,www.example.comexample.com可以共用同一个证书。
  • Key Usage:指定证书可以用于哪些用途,比如加密通信、签名文件等。

浏览器会检查这些扩展字段,确保它们符合预期。如果发现异常,比如SAN字段中缺少某些域名,浏览器可能会警告用户。

第五步:正式启动TLS加密通信

经过前面的校验后,浏览器会与服务器进行TLS加密通信。

TLS握手的过程:

  1. 客户端发送ClientHello:浏览器告诉服务器支持的加密算法、协议版本等信息。
  2. 服务器发送ServerHello:服务器选择一种双方都支持的加密算法,并返回自己的证书。
  3. 客户端验证证书:浏览器再次验证服务器返回的证书。
  4. 生成共享密钥:双方协商出一个对称加密密钥,用于后续的数据传输。
  5. 完成握手:双方确认握手成功,开始加密通信。

若对整个TLS握手过程的细节感兴趣,可以参阅往期博文:《重磅!图文详解HTTPS协议通信全过程,结合抓包实战分析,带你一次看透HTTPS!》。

浏览器如何一步步校验证书的有效性?一文带你搞懂!
TLS握手的详细过程

常见问题及解决方法

  1. 证书过期:及时更新证书,确保其有效期覆盖整个访问周期。
  2. 域名不匹配:确保证书上的域名与实际访问的域名完全一致。
  3. 证书链中断:检查服务器配置,确保证书链完整无误。
  4. 自签名证书:如果证书不是由可信CA签发的,浏览器会弹出警告。建议使用正式的CA签发的证书。

总结

通过以上五个步骤,浏览器能够有效地校验证书的有效性,保护用户的网络通信安全。虽然这个过程看似复杂,但实际上浏览器已经为我们做了大量工作。

作为普通用户,我们只需要记住一点:尽量访问带有绿色锁标志的HTTPS网站,避免点击未知链接或下载不可信的软件

希望这篇文章能帮助你更好地理解浏览器的工作原理!如果你有任何疑问,欢迎留言交流。网络安全,我们一起守护!

附录:参考资源

  • Mozilla 官方文档: https://developer.mozilla.org/
  • Let’s Encrypt 官方博客: https://letsencrypt.org/
  • RFC 8446: TLS 1.3 标准: https://datatracker.ietf.org/doc/html/rfc8446

关注我,带你用“人话”读懂技术硬核! 🔥

原文始发于微信公众号(全栈安全):浏览器如何一步步校验证书的有效性?一文带你搞懂!

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月8日09:00:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   浏览器如何一步步校验证书的有效性?一文带你搞懂!https://cn-sec.com/archives/4040306.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息