SSL 根证书的相关概念

什么是可信任根证书库

      我们在浏览一个 HTTPS 网站的时候,服务器会发送证书链,但光有证书链,客户端是不能完成证书校验的,必须在浏览器本地机器上有一张根证书才能完成签名认证,也就是说客户端必须信任根证书才能构建信任基础。各个 CA(证书签发机构) 机构为了开展业务,必须申请将自己的根证书嵌入到各个操作系统平台中,如果申请(向微软、苹果或Linux发布厂家申请)被拒绝,CA 机构将无法开展业务,即如果操作系统厂家不允许某个CA机构在自己的操作系统里打包安装该CA的根证书,则该CA签发的证书是不被认可的。

      对于普通用户和开发者来说,一般情况下无需了解可信任根证书库,但是有些情况下,也有可能希望更新本地的可信任根证书库,比如:

(1)在开发环境中应该避免使用线上证书,因为证书和私钥一起保存,由于开发环境比较混乱,容易泄露私钥,从而带来安全风险。

在这种情况下,可以生成一张自签名证书,由于浏览器不信任该证书,访问网站的时候总会提示安全风险,为了避免频繁的提示,可以手动将证书添加到浏览器的可信任根证书库中。

(2)企业内部构建一个私有 CA,然后给自己的业务签发证书,这种情况很常见,比如一些内部管理系统完全可以使用自签发的证书,减少证书申请成本,为避免员工访问的时候提示安全风险,可以将证书添加到浏览器的可信任根证书库中。

Windows 根证书库

       微软的操作系统采用 CryptoAPI库, CryptoAPI是密码学底层代码库,它包含系统根证书库,IE、Edge、Windows 平台的 Chrome 用的都是微软的系统根证书库。

      微软的系统根证书库保存在注册表中,由于 windows 电脑是一个多用户操作系统,且允许组策略管理,所以根证书库存在于多个位置,比如:

  • CERT_SYSTEM_STORE_CURRENT_USER,代表当前登陆用户,对应的证书存储在 HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates 目录。
  • CERT_SYSTEM_STORE_LOCAL_MACHINE,代表本机,对应的证书存储在 HKEY_LOCAL_MACHINE\Software\Microsoft\SystemCertificates 目录。
  • CERT_SYSTEM_CURRENT_USER_GROUP_POLICY,代表当前用户组策略,对应的证书存储在 HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates 目录。

一般情况下,windows 系统的登陆用户使用的根证书库保存在 CERT_SYSTEM_STORE_CURRENT_USER,微软提供了一个 certmgr 工具管理根证书(实际上操作的是注册表),在 cmd 命令提示符中输入 certmgr 打开证书管理工具,如下图:

SSL 根证书的相关概念_第1张图片

对于我们来说,最要关心是“受信任的根证书颁发机构”,所有根证书都存储在这个目录下,可以通过 certmgr 工具和 certmgr 命令行添加或删除根证书。

Chrome 如何在 windows 系统中更新证书

参见:Windows下用OpenSSL生成CA根证书及签发server端证书_白袍小将的博客-CSDN博客


 

你可能感兴趣的:(HTTP技术,ssl,http,SSL根证书)