如何让chrome信任自签名证书?

作者 : 开心源码 本文共3673个字,预计阅读时间需要10分钟 发布时间: 2022-05-11 共226人阅读

在《初识NSS,一文理解全貌》这篇文章详细详情了 NSS 密码库,很多开发者也许没听说过 NSS,但都知道 NSS 密码库中的可信任根证书库(cert9.db或者者cert8.db),很多软件和服务都能引使用 NSS 的可信任证书库。作为目前最流行的浏览器 Chrome和Firefox,他们在不同的平台也能用 NSS 可信任根证书库,所以本文就聊聊相关知识,让大家对 NSS 密码库有更深刻的了解,了解可信任根证书库对于了解 HTTPS 协议非常重要。

本文要答复的几个主题:

  • 你知道 Chrome 用的根证书库来自哪儿吗?
  • 你知道 Firefox 用的根证书库来自哪儿吗?
  • 你知道如何生成自签名证书吗?
  • 你知道如何导出证书吗?
  • 你知道如何在 Chrome 和 Firefox 中升级证书吗?

因为内容比较多,所以本文分两篇文章讲解,第一篇主要讲解 NSS 和 windows 的根证书库,并且详情如何在 Chrome 中升级根证书。第二篇讲解如何升级 NSS 根证书库,如何升级 Firefox 用的根证书库。

先入为主,下面表格列举了不同平台、不同浏览器引使用可信任证书库的少量情况。

浏览器平台WindowsUnix
Chrome用 windows 可信任根证书库用 NSS 可信任根证书库
Firefox用 NSS 可信任根证书库用 NSS 可信任根证书库

什么是可信任根证书库

证书链证书链

在连接一个 HTTPS 网站的时候,服务器会发送证书链,但光有证书链,用户端是不可以完成证书校验的,必需有一张根证书才可以迭代完成签名认证,也就是说用户端必需信任根证书才可以构建信任基础,那么根证书在哪儿呢?

  • 在 windows 平台中,微软有专门的根证书库。
  • 在 Linux 平台中,软件和服务一般用 NSS 根证书库。
  • 在苹果平台中,也有专门的根证书库。

各个 CA 机构为了展开业务,必需申请将自己的根证书嵌入到各个平台中,假如申请被拒绝,CA 机构将无法展开业务。

在开源软件领域,NSS 根证书库是最流行的,所以很多软件和服务会用 NSS 根证书库,起因何在?关键就在于透明性,NSS 在审核方面做的很严格,坚决杜绝非法 CA 根证书的存在。

对于普通使用户和开发者来说,一般情况下接触不到可信任根证书库,但是有些情况下,也有可可以希望升级本地的可信任根证书库,比方:

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

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

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

再一次解读 certutil 和 cert9.db

在 NSS 可信任根证书库中,所有数据保存在 cert9.db(cert9.db, key4.db, and pkcs11.txt)或者者 cert8.db(cert8.db, key3.db, secmod.db)中,从 Firefox 58 版本后用的是 cert9.db,比方在我的 windows 10 系统中,cert9.db 文件保存在 “C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\ptayekv6.default” 目录下。

那么 cert9.db 和 cert8.db 区别在哪儿呢,这是两种不同的数据格式。cert9.db 代表 SQLite 数据库,而 cert8.db 代表 legacy security 数据库。

用 certutil 命令行工具能管理 NSS 证书,安装很简单:

# Debian/Ubuntu$ apt-get install libnss3-tools # Fedora/cnetos$ yum install nss-tools

首先通过下令命令查看 cert9.db 文件中包含那些根证书:

# 假如是 cert8.db 文件,不使用加 sql:前缀$ certutil -d sql:$HOME/.pki/nssdb/test -L  

其中 -d 参数表示在那给目录寻觅 cert9.db 文件,-L 显示该文件中含有的证书文件,输出如下:

Certificate Nickname                     Trust Attributes                                         ,,   GlobalSign CloudSSL CA - SHA256 - G3                         ,,   DigiCert SHA2 Secure Server CA                               ,,   DigiCert SHA2 Extended Validation Server CA                  ,,   Google Internet Authority G2                                 ,,   GlobalSign Organization Validation CA - SHA256 - G2          ,,   GeoTrust SSL CA - G3                                         ,,   Symantec Class 3 Secure Server CA - G4                       ,,   COMODO RSA Certification Authority                           ,,   Google Internet Authority G3                                 ,,   Let's Encrypt Authority X3                                   ,,   Go Daddy Secure Certificate Authority - G2                   ,,   Go Daddy Root Certificate Authority - G2                     ,,   Amazon Root CA 1                                             ,,   Starfield Services Root Certificate Authority - G2           ,,   AlphaSSL CA - SHA256 - G2                                    ,,   Certum Domain Validation CA SHA2                             ,,   DigiCert SHA2 High Assurance Server CA                       ,,   RapidSSL RSA CA 2018                                         ,,   COMODO RSA Organization Validation Secure Server CA          ,,   Amazon                                                       ,,     DigiCert Global CA G2                                        ,,   WoSign OV SSL CA                                             ,,   GeoTrust RSA CA 2018                                         ,,  

Windows 根证书库

微软的 CryptoAPI 也非常流行,和 NSS 一样,都是密码学底层代码库,也包含系统根证书库,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 打开证书管理工具,如下图:

certmgrcertmgr

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

Chrome 如何在 windows 系统中升级证书

在 windows 系统中,Chrome 用的是 Windows 根证书库,假如需要升级,能有两种方式,第一种就是用 certmgr 管理证书。第二种是要重点详情的,就是用 Chrome 功可以菜单升级证书,实际上该功可以菜单就相当于执行 certmgr 管理操作,只是将该功可以集成到 Chrome 中。

首先我们从线上获取一张自签名证书(生成自签名证书方法见本文下一篇),比方访问 https://www.test.com,而后打开 Chrome 开发者工具(F8),选择【Security】-【View Certificate】,而后一步步如下图导出自签名证书,并保存为 test.cer,注意保存为 .cer 格式。

导出证书导出证书

接下来就是将该证书导入到根证书库中,有两种方式,第一种是双击 test.cer 文件,而后一步步将证书导入;另外中就是通过 Chrome 功可以菜单导入,首先打开【设置】-【管理证书】菜单,而后如下图导入,注意选择将证书保存到受信任的根证书颁发机构。

导出证书导出证书

重启 Chrome 后,而后访问 https://www.test.com,是不是没有安全警告了?

欢迎关注我的公众号(yudadanwx),理解我最新的博文和本书。yudadanwx

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 如何让chrome信任自签名证书?

发表回复