https证书合法性验证

例如:一个新上线网站,购买了 CA 证书。用户通过浏览器去访问时,浏览器是如何校验证书的合法性,从而避免被中间人攻击。

一、证书的安全性

  • 证书存在的目的就是避免中间人攻击,避免发生经典的传令兵问题。
  • 证书都是由CA组织下认可的根证书Root签发的。该组织会对每年每个CA签发的证书进行审核,因此可以保证正常途径签发的证书根是绝对可信的。
  • 证书分为DV(Digital Verification),OV(Organization Verification)和EV(Extended Verification)几类,其中EV证书最贵,可以在浏览器中看到绿色的就是EV证书。
  • 证书是需要预装的,特别是根证书。IE和Chrome是通过内置在Windows系统中的TrustStore来管理根证书(当然自己也可以手动导入自签证书,浏览不会认可的因为有OCSP和CRL–之后细讲);而Firefox则是内置在自己的浏览中。

二、证书的校验

浏览器在校验证书的合法性时,主要是通过两个方向进行校验的:

  1. 证书是否为值得信任有效证书。所谓信任是指,web服务器的证书是否为信任根(浏览器内置有信任的根证书)或信任根的二级证书机构颁发的。所谓有效是指,web服务器的证书是否在有效期内,是否已被吊销。
  2. web服务器的证书是否为其合法持有者。需要证明对方是否持有证书对应的私钥。验证方式有两种:
    • 对方签名,浏览器用证书对签名进行验证。
    • 使用证书作为信封,判断对方是否能够解开。

上述校验过程中,校验证书是否已被吊销需要和 CA 关联,其他均可由浏览器完成。验证证书是否吊销可以采用CRL黑名单方式或者OCSP方式。

  • CRL黑名单就是定期从CA下载一个名单列表,里面有吊销的证书序列号,自己在本地比对一下就行。优点是效率高。缺点是不实时。
  • OCSP是实时连接CA去验证,优点是实时,缺点是效率不高。

三、证书的工作原理

https://www.google.com 为例:

  1. 浏览器发现协议为 https,握手拿到 google 的证书,先从系统(window)或浏览器内置(Firefox)检查证书链是否正确。
  2. 如果验证失败则会拦截。
  3. 浏览器尝试查CRL(证书吊销列表)和OCSP(在线证书检查)。

    注意:

    • CA不会直接暴露到外网的,如果需要访问CA服务器需要使用硬件Token并且多人在场录像,且只能远程访问。OCSP相当于证书数据库的备份而已是直接暴露在外网的可以通过HTTP或者HTTPS访问。
    • OCSP是一种新技术。部分客户端可能不支持,仅支持 CRL
  4. 如果发现证书并没有被吊销或者过期则浏览器对EV证书会显示为绿色,对OV证书则是通过放行。否则弹出通知,该网站不可信。

检查流程:

  1. 客户端发送信息,带上支持的SSL或者TLS版本(不同浏览器支持程度不同)。
  2. 服务器返回确认使用的加密通信协议版本以及加密随机数和CA证书。
  3. 浏览器验证证书(存在双向验证和单项验证) -> OCSP或者CRL 结合自带truststore。
  4. 检查CA证书的根证书颁发机构是否受浏览器信任。
  5. 检查CA证书中的证书吊销列表,检查证书是否被吊销。
  6. 检查CA证书是否在有效期内。
  7. 检查部署CA证书的网站域名与证书颁发的域名是否一致。
  8. 浏览器核对该网站是否存在于欺诈网站数据库中。

四、相关阅读

-------------本文结束感谢您的阅读-------------
0%