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

Wes*_*eed 33 windows firewall firefox ssl-certificate certificate-authority

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

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

我从这篇文章怀疑是不可能的,但那个帖子已经快 4 年了。

小智 50

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

从 Firefox 68 开始,这个功能在 ESR(企业)版本中默认启用,但在(标准)快速版本中没有。

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

security.enterprise_roots.enabled
Run Code Online (Sandbox Code Playgroud)

并将其设置为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);
Run Code Online (Sandbox Code Playgroud)

使用.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
Run Code Online (Sandbox Code Playgroud)

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

  • 清单是: 1:Firefox 没有在高级 -> 证书中列出 Windows 证书,但无论如何都应该以受信任的方式工作。2:服务器证书必须使用该 CA 创建,直接使用 CA 作为服务器证书将不起作用。3:必须正确生成服务器证书,继承主题备用名称的 CA 策略。4:如果certstore是错误的,请尝试使用Microsoft的certutil,我这样做:在管理员cmd窗口中:`certutil -addstore Root path\to\cafile.pem`(或.crt) (2认同)

Tim*_*ham 1

没有一个好的方法来处理强制使用系统存储,但有一个很好的解决方法(强制使用自定义的 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
}
Run Code Online (Sandbox Code Playgroud)