美文网首页程序员
在firefox中更新证书的几种方式

在firefox中更新证书的几种方式

作者: 虞大胆的叽叽喳喳 | 来源:发表于2018-07-02 14:18 被阅读42次

    本文是如何在浏览器中更新证书的第二部分,第一部分内容请阅读《如何让chrome信任自签名证书》,主要以一个用户的角度解释如何在线获取自签名证书,并将该证书加入到 chrome 中;而对于开发者来说,更希望生成自签名证书,并部署到网站中,本文就是介绍如何生成自签名证书,并演示多种将证书添加到 firefox 中的方法。

    使用 firefox 功能菜单更新证书

    firefox 功能菜单能够直接添加证书,原理其实就是通过操作界面更新 cert9.db 文件。

    打开【选项】->【隐私和安全】->【查看证书】菜单,如下图:

    查看证书

    添加例外(浏览器会在线获取证书)后,浏览器(实际是 cert9.db )就添加了相应的证书,如下图:

    添加例外

    需要注意的是,虽然浏览器信任了该证书,让你能够正常访问部署自签名证书的网站,但由于是一个自签名证书,浏览器仍然会提醒你该网站可能存在安全风险,警告形式如下图:

    安全警告

    使用 certutil 更新证书库

    首先介绍如何使用 openssl 工具生成自签名证书(cerutil 工具也可以),运行如下命令生成 csr 文件:

    $ openssl req -new -sha256 -newkey rsa:2048 -nodes -subj '/CN=www.test.com/O=Test, Inc./C=CN/ST=Beijing/L=Haidian'  -keyout example_key.pem -out example_csr.pem
    

    其中 example_key.pem 表示私钥文件,example_csr.pem 文件将来要生成证书文件,公钥是一个 2048 比特长度的 RSA 公钥。

    然后生成一个证书扩展文件,在本例中是 SAN 扩展,运行如下命令:

    $ echo "subjectAltName=DNS:www.test.com > certext.ext 
    

    最后生成证书,运行如下命令:

    $ openssl x509 -req -days 365 -in example_csr.pem -signkey example_key.pem -out example_cert.pem -extfile certext.ext 
    

    接下来使用 certutil 工具给 cert9.db 添加证书,在 NSS 中有三种证书,分别是 CA 根证书、中间证书、自签名证书。对应的操作命令如下:

    # CA 根证书 
    $ certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n <certname> -i <certfile> 
    
    # 中间证书 
    $ certutil -d sql:$HOME/.pki/nssdb -A -t ",," -n <certname> -i <certfile> 
    
    # 自签名证书 
    $ certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certname> -i <certfile> 
    

    区别就在于 -t 对应的参数值,为什么要用逗号分割三个区域呢?三个区域分别代表该证书可用于 https 证书验证、email 证书验证、数字签名验证。

    在本例中,想给 cert9.db 添加证书,运行如下命令:

    $ certutil -A -n ywdblog@outlook.com -t "p,p,p" -i example_cert.pem  -d sql:$HOME/.pki/nssdb
    

    更新后,可以使用 certutil 工具验证是否添加成功,然后重新启动浏览器,看看效果。

    firefox 使用 windows 系统根证书库

    在 windows 系统中,firefox 也可以不使用 nss 根证书库,可以使用 windows 系统根证书库。

    从 firefox 49 版本开始,可以启用 security.enterprise_roots.enabled 选项(默认是关闭的),firefox 就可以使用 windows 系统根证书库,具体操作如下。

    在 firefox 地址栏中输入“about:config”,然后修改 security.enterprise_roots.enabled,具体如下图:

    config

    但是需要注意的是,并不是开启该选项后就生效,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:从原理到实战》,欢迎去各大电商购买,也欢迎关注我的公众号(yudadanwx),了解我最新的博文和本书。


    qrcode_for_gh_27a6d90762d3_258.jpg

    相关文章

      网友评论

        本文标题:在firefox中更新证书的几种方式

        本文链接:https://www.haomeiwen.com/subject/vtnayftx.html