在 Firefox 系统范围内添加证书颁发机构

在 Firefox 系统范围内添加证书颁发机构

我想添加一些 Ubuntu 上默认 Firefox 中没有的根 CA,但我不知道如何做。

我尝试将它们添加到本地证书中certutil,但没有成功。它弄乱了我的证书数据库。

$ certutil -A -d .mozilla/firefox/kek3dogy.default/ -i /usr/local/share/ca-certificates/FNMT_ACRAIZ.crt -n "Certificado Raiz FNMT" -t "TCu,Cuw,Tuw"

进而

$ certutil -L -d .mozilla/firefox/kek3dogy.default/

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

Go Daddy Secure Certification Authority                      ,,   
VeriSign Class 3 Secure Server CA - G3                       ,,   
VeriSign Class 3 Extended Validation SSL CA                  ,,   
DigiCert High Assurance CA-3                                 ,,   
GlobalSign Domain Validation CA - G2                         ,,   
GeoTrust SSL CA                                              ,,   
StartCom Class 2 Primary Intermediate Server CA              ,,   
Google Internet Authority                                    ,,   
Certificado Raiz FNMT                                        CT,C,c
USERTrust Legacy Secure Server CA                            ,,   
HP Jetdirect 2B0EAD20                                        ,,   
Akamai Subordinate CA 3                                      ,,   
VeriSign, Inc.                                               ,,   
Thawte SGC CA                                                ,,   
VeriSign Class 3 Secure Server CA - G2                       ,,

证书不会显示在 Firefox 上。我尝试了几次,甚至删除了配置文件,但它在 Firefox 界面上出现了一次,但却是空的。

无论如何,这仅适用于用户,我想在系统范围内添加他们。是否有我可以修改的系统范围数据库?如何修改?

如果没有可以修改的系统范围数据库,我可以依靠 X 启动脚本(作为/etc/X11/Xsession.d/一个脚本,或由 xdg autostart system on 调用的脚本/etc/xdg/autostart/)在会话启动时修改用户配置文件,但我需要一个有效的解决方案。我现在甚至无法从命令行在用户配置文件上加载证书!

答案1

这里的问题是 Firefox 没有一个“中心”位置来查找证书。它只是查看当前配置文件。这就是为什么修改/usr/share/ca-certificates或其他类似目录对 Firefox 不起作用的原因。这是多年来一直要求的;请参阅问题620373449498454036(可能还有很多其他的)。

因此,您只剩下两种解决方案:要么修改每个配置文件,要么修改 Firefox 的行为。我知道这不是您想要的,但是没有办法,因为 Firefox 只查看用户的配置文件。

话虽如此,我选择的解决方案是使用硬链接或符号链接,具体来说,我会选择硬链接。虽然我没有足够的信息来判断,但这个解决方案肯定是最简单的,也可能是更好的。

您需要做的基本上是删除每个配置文件中的每个cert8.db和文件,并将其替换为指向“最完整”和key3.db的链接。如果您使用硬链接,则原始和将与新和难以区分。cert8.dbkey3.dbcert8.dbkey3.db

记得调整权限以满足您的需求。最有可能的是,您需要这样做,chmod a+rw以便每个人都能够添加/删除证书。如果您只希望某些用户能够添加/删除证书,您可以创建一个组,将两个数据库分配给该组,并+w仅向该组授予权限。

答案2

最简单的方法是将证书导入示例 Firefox 配置文件,然后将 cert8.db 复制到您想要配备证书的用户。

首先手动将证书导入到示例用户的 Firefox 配置文件中。然后复制

/home/${USER}/.mozilla/firefox/${randomalphanum}.default/cert8.db

进入用户的 Firefox 配置文件。就是这样。如果您想确保新用户自动获得证书,请复制cert8.db到:

/etc/firefox-3.0/profile

以下是不覆盖现有证书的替代方法:[Linux 系统的 bash 片段]

certificateFile="MyCa.cert.pem"
certificateName="MyCA Name" 
for certDB in $(find  ~/.mozilla* ~/.thunderbird -name "cert8.db")
do
  certDir=$(dirname ${certDB});
  #log "mozilla certificate" "install '${certificateName}' in ${certDir}"
 certutil -A -n "${certificateName}" -t "TCu,Cuw,Tuw" -i ${certificateFile} -d ${certDir}
done

您可以在 libnss3-tools 包(debian/ubuntu)中找到 certutil。

也可以看看:编程导入 CA 证书

来源:以编程方式将证书安装到 Mozilla 中

答案3

找到了这个解决方案来在 ubuntu 上向 Firefox 添加证书:

https://github.com/mozilla/policy-templates/#proxy

只需将此文件添加到:

/usr/lib/firefox/distribution/

touch policies.json

在policy.json中添加:

{
"policies": {
"Certificates": {
    "ImportEnterpriseRoots": true,
    "Install": [
               "somecert1.crt",
               "usr/local/share/ca-certificates/somecert1.crt"
               ]
         }
    }
}

安装部分首先是证书的名称,然后是路径。然后重新启动 Firefox。如果不起作用,请尝试重置 Firefox,就好像您之前设置了某些东西,它就会卡住一样。

此方法无需 certutil 即可有效运行。

答案4

Mozilla 表示,从 Firefox 64 开始,可以从 Linux 中的以下系统路径导入自己的“企业 CA”:

  • /usr/lib/mozilla/certificates
  • /usr/lib64/mozilla/certificates

这些路径在 Ubuntu 中默认不存在,但可以手动添加。

此外,您必须命名文件中的每个证书/usr/lib/firefox/distribution/policies.json,以便自动导入:

{
    "policies": {
        "ImportEnterpriseRoots": true,
        "Certificates": {
            "Install": [
                "example.crt",
                "/specific/folder/another-example.crt"
            ]
       }
    }
}

在这种情况下,当 Firefox 重新启动时,将在任一指定的默认目录中添加一个名为“example.crt”的证书文件。

正如 Batchen Regev 在他的回答中所展示的,您还可以指向具有绝对路径的文件。 (这样,Linux 上的 .NET core 开发服务器也会添加 localhost 证书)。

参考:
https://support.mozilla.org/en-US/kb/setting-certificate-authorities-firefox

相关内容