如何让 Firefox 信任系统 CA 证书?

如何让 Firefox 信任系统 CA 证书?

我们的网络管理员最近在我们的防火墙/路由器上启用了 HTTPS 检查。对于 IE 用户来说,这很好,因为证书已全部通过 Active Directory 分发给已加入域的计算机。但是,我们有许多 Firefox 用户现在几乎在每个 HTTPS 网站上都抛出了证书错误。

Firefox 使用自己的 CA 存储,他们也为此感到自豪。有什么方法可以让 Firefox 默认信任系统证书存储?我看到很多关于如何在 Linux 中执行此操作的帖子,但没有关于 Windows 的帖子。

我怀疑这个帖子这是不可能的,但是那篇帖子已经有四年了。

答案1

自 Firefox 49 起对 Windows CA 证书的一些支持并自 Firefox 52 起支持 Active Directory 提供的企业根证书。自 macOS 63 版起也支持从 Keychain 读取。

自 Firefox 68 起,此功能在 ESR(企业)版本中默认启用,但在(标准)快速版本中未启用。

about:config您可以通过创建以下布尔值为Windows 和 macOS 启用此功能:

security.enterprise_roots.enabled

并将其设置为true

对于 GNU/Linux,这通常由 p11-kit-trust 管理,不需要标志。

部署整个系统配置

自 Firefox 64 起,有一种新的推荐方法,即使用策略,记录在https://support.mozilla.org/en-US/kb/setting-certificate-authorities-firefox

对于旧版本,可以从 Windows 注册表中检索 Firefox 安装文件夹,然后转到defaults\pref\子目录并使用以下内容创建一个新文件:

/* Allows Firefox reading Windows certificates */    
pref("security.enterprise_roots.enabled", true);

使用扩展名保存它.js,例如trustwincerts.js并重新启动 Firefox。该条目将显示在about:config所有用户中。

在系统范围内部署 Windows 证书

在 Firefox 49 到 51 版本中,它仅支持“Root”存储。从 Firefox 52 开始,它支持其他存储,包括通过 AD 从域中添加的存储。

这有点超出范围,但解释了 Firefox 版本 49 至 51 中唯一支持的证书存储或仅用于本地测试的证书存储。由于这会为所有本地计算机用户部署,因此需要您在 CMD/PowerShell 窗口或您自己的自动部署脚本中拥有管理员权限。:

certutil -addstore Root path\to\cafile.pem

如果您喜欢使用鼠标方式,也可以通过单击多个窗口从管理控制台完成此操作(如何:使用 MMC 管理单元查看证书)。

答案2

您是否考虑过将这些证书部署到 Firefox 以及 Windows 证书存储区?

https://wiki.mozilla.org/CA:AddRootToFirefox详细说明几个选项:

  1. 直接使用 修改证书数据库certutil
  2. 使用 Firefox 的自动配置功能,通过将 javascript 文件与二进制文件一起放置来添加证书:

    var certdb = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB);
    var certdb2 = certdb;
    try {
        certdb2 = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB2);
    } catch (e) {}
    cert = "MIIHPT...zTMVD"; // This should be the certificate content with no line breaks at all.
    certdb2.addCertFromBase64(cert, "C,C,C", "");
    
  3. 直接分发证书数据库文件。
  4. 打包 Firefox 进行安装,包括发行版中的证书。
  5. 使用CCK2创建一个添加证书的扩展。

答案3

没有好的方法来强制使用系统存储,但有一个很好的解决方法(强制使用定制的 Firefox 兼容存储)。

下面的脚本在登录/注销时运行良好。

Stop-Process -processname firefox

$DBPath="\\yourserver\yourshare\cert8.db"
$FirefoxProfiles=Get-ChildItem $Env:appdata\Mozilla\Firefox\Profiles     
$DB=Get-Item $DBPath    
ForEach ( $Profile in $FirefoxProfiles )
{
    $FullPath=join-path $Env:appdata\Mozilla\Firefox\Profiles $Profile
    Copy-Item $DB $FullPath
    $FullPath
}

答案4

免费项目它提供了使用组策略管理 Firefox 根证书的功能。您可以从 Firefox 数据库中安装或删除根证书。

相关内容