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

本文要回答的几个主题:

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

由于内容比较多,所以本文分两篇文章讲解,第一篇主要讲解 NSS 和 windows 的根证书库,并且介绍如何在 Chrome 中更新根证书。第二篇讲解如何更新 NSS 根证书库,如何更新 Firefox 使用的根证书库。

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

浏览器平台 Windows Unix
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 打开证书管理工具,如下图:

certmgr

对于我们来说,最要关心是“受信任的根证书颁发机构”,所有根证书都存储在这个目录下,可以通过 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,是不是没有安全警告了?

作者:虞大胆的叽叽喳喳
链接:https://www.jianshu.com/p/35c31b865bb9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

windows中如何让chrome信任自签名证书?相关推荐

  1. 怎么让 chrome 信任自签名证书(亲测有效)

    https本地自签名证书添加到信任证书访问 1.背景 本文适用于基于https(http+ssl)的网站通信.本地调试等,上线是请寻找免费 ssl证书申请. 本地调试过程中,一些特殊的场景需要我使用h ...

  2. 在Postman中使用不受信任的SSL证书(转)

    转载自:http://www.cnblogs.com/ajianbeyourself/p/3899729.html 阅读目录 第一种方案--临时添加到受信任的证书颁发机构: 第二种方案--永久添加到受 ...

  3. 使Chrome接受自签名的本地主机证书

    我已经为本地主机CN创建了一个自签名SSL证书. 如预期的那样,Firefox在最初抱怨它之后接受了该证书. 但是,即使将证书添加到"受信任的根"下的系统证书存储中,Chrome和 ...

  4. 自签名证书说明——自签名证书的Issuer和Subject是一样的。不安全的原因是:没有得到专业SSL证书颁发的机构的技术支持?比如使用不安全的1024位非对称密钥对,有效期设置很长等...

    一般的数字证书产品的主题通常含有如下字段: 公用名称 (Common Name) 简称:CN 字段,对于 SSL 证书,一般为网站域名:而对于代码签名证书则为申请单位名称:而对于客户端证书则为证书申请 ...

  5. 添加自签发的 SSL 证书为受信任的根证书

    通过 SSL 加密的 HTTPS 连接访问网站时,需要安装并配置一个受信任的 CA 根证书(Trusted CA Root Certificate).平常访问一些加密网站之所以不需要自己安装证书,是因 ...

  6. 沃通EV代码签名证书被微软指定用于windows10内核签名

    昨日,微软在Windows 硬件开发人员中心(获取代码签名证书)栏目,向全球Windows开发者推荐买沃通(WoSign)标准型(OV)代码签名证书和增强型(EV)代码签名证书用于数字签名各种代码(包 ...

  7. linux安装globalsign证书,globalsign代码签名证书

    GlobalSign代码签名证书被平台上的开发人员使用来对通过Internet 分发的应用程序和软件进行数字签名. 因为签名的代码包括发布者的名称以及该代码自发布以来未被篡改的保证,任何人从互联网下载 ...

  8. 沃通PDF签名证书 保障电子发票真实有效

    为什么80%的码农都做不了架构师?>>>    沃通CA与重庆有线网络股份有限公司达成合作,为重庆有线及其下属30余家分公司提供PDF签名证书产品,为电子发票业务提供可靠电子签名.​ ...

  9. android ssl http,Android SSL HTTP请求使用自签名证书和CA

    可以完成的任务,也使用DefaultHttpClient,即使here is suggested到: 身高HttpURLConnection的新代码 讲究也进口或添加证书到您的应用程序,因为你可能有在 ...

  10. Windows安装.net Framework时安装不上,提示已处理证书链,但是在不受信任提供程序信任的根证书中终止

    解决Windows安装.net Framework时安装不上,提示已处理证书链,但是在不受信任提供程序信任的根证书中终止. 通过网上资料查询找到了以一个可以解决此问题的博客,这里把连接放到这.下次在遇 ...

最新文章

  1. 第一方Cookie和第三方Cookie
  2. 台式计算机属于,pc机属于什么型计算机
  3. php自定义能过滤器,过滤器与自定义过滤器的介绍
  4. (软件工程复习核心重点)第三章需求分析-第四节:其他图形工具
  5. mysql 多机房灾备,TFS多机房容灾策略
  6. 对spinner小结
  7. ASP.NET字符显示不正确的解决方法
  8. 12.12 带触发器按钮的输入框
  9. 设置返回IOS开发(26)之UITableView的页眉和页脚
  10. 坐标轨迹计算_三坐标测量机控制系统功能介绍
  11. java增强型for报错_Java自学-数组 增强型for循环
  12. 士兵杀敌(三)_RMQ(区间最值查询)
  13. 中国建设银行-跨境易支付
  14. 基于BP神经网络PID控制+Simulink仿真
  15. 金蝶专业版服务器操作系统,金蝶kis专业版 服务器 设置
  16. uniapp实现点击回到顶部
  17. 为什么家里的wifi连接上但用不了
  18. PID原理及python简单实现与调参
  19. NYOJ 628 小媛在努力
  20. 理解 与 计算 物联网产品的电池使用寿命

热门文章

  1. html图片圆点切换,图片轮播带小圆点选择左右切换
  2. 解决python在linux上导包出现no module named ...的问题
  3. 安卓QQ聊天记录导出、备份完全攻略
  4. matlab机器人运动仿真,基于MATLAB机器人手臂运动仿真
  5. 计算机系统动态库修复,电脑系统windows7出现无法定位动态链接库user32.dll错误提示解决措施...
  6. 反向代理负载均衡之APACHE
  7. MySQL之mysqldump备份数据库
  8. Win7安装.net 4.7.2
  9. 计算机软件自启动设置,设置开机启动项,详细教您电脑如何设置开机启动项
  10. 圣经经文搜索定位功能的考虑