本文是如何在浏览器中更新证书的第二部分,第一部分内容请阅读
《如何让chrome信任自签名证书》
,主要以一个用户的角度解释如何在线获取自签名证书,并将该证书加入到 chrome 中;而对于开发者来说,更希望生成自签名证书,并部署到网站中,本文就是介绍如何生成自签名证书,并演示多种将证书添加到 firefox 中的方法。
使用 firefox 功能菜单更新证书
firefox 功能菜单能够直接添加证书,原理其实就是通过操作界面更新 cert9.db 文件。
打开【选项】->【隐私和安全】->【查看证书】菜单,如下图:
添加例外(浏览器会在线获取证书)后,浏览器(实际是 cert9.db )就添加了相应的证书,如下图:
需要注意的是,虽然浏览器信任了该证书,让你能够正常访问部署自签名证书的网站,但由于是一个自签名证书,浏览器仍然会提醒你该网站可能存在安全风险,警告形式如下图:
使用 certutil 更新证书库
首先介绍如何使用 openssl 工具生成自签名证书(cerutil 工具也可以),运行如下命令生成 csr 文件:
其中 example_key.pem 表示私钥文件,example_csr.pem 文件将来要生成证书文件,公钥是一个 2048 比特长度的 RSA 公钥。
然后生成一个证书扩展文件,在本例中是 SAN 扩展,运行如下命令:
最后生成证书,运行如下命令:
接下来使用 certutil 工具给 cert9.db 添加证书,在 NSS 中有三种证书,分别是 CA 根证书、中间证书、自签名证书。对应的操作命令如下:
区别就在于 -t 对应的参数值,为什么要用逗号分割三个区域呢?三个区域分别代表该证书可用于 https 证书验证、email 证书验证、数字签名验证。
在本例中,想给 cert9.db 添加证书,运行如下命令:
更新后,可以使用 certutil 工具验证是否添加成功,然后重新启动浏览器,看看效果。
firefox 使用 windows 系统根证书库
在 windows 系统中,firefox 也可以不使用 nss 根证书库,可以使用 windows 系统根证书库。
从 firefox 49 版本开始,可以启用 security.enterprise_roots.enabled 选项(默认是关闭的),firefox 就可以使用 windows 系统根证书库,具体操作如下。
在 firefox 地址栏中输入“about:config”,然后修改 security.enterprise_roots.enabled,具体如下图:
但是需要注意的是,并不是开启该选项后就生效,firefox 49 以后的版本,会读取 windows CERT_SYSTEM_STORE_LOCAL_MACHINE 下的证书;firefox 52 以后的版本,还会读取 CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY 和 CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE 下的证书。
由于在 windows 下,用户的根证书都保存在 CERT_SYSTEM_STORE_CURRENT_USER 目录下,所以需要将该目录下的证书都拷贝到 CERT_SYSTEM_STORE_LOCAL_MACHINE 目录下,firefox 才会真正使用 windows 系统根证书库,这是需要注意的一点,至于采用这个策略的原因,比较让人困惑。
如果你想了解我的新书《深入浅出HTTPS:从原理到实战》,可以阅读我写了一本书《深入浅出HTTPS:从原理的实战》。
再一次重申,从2018年03月份后我写的文章和不会和《深入浅出HTTPS:从原理到实战》这本书有任何的重合,都是一些新知识。
如果你对密码学&HTTPS协议,Web后端开发(LAMP平台)、PHP&Python感兴趣,可以关注我的公众号(yudadanwx)。
领取专属 10元无门槛券
私享最新 技术干货