是否可以在系统范围内或至少在 Firefox 上禁用证书颁发机构?

int*_*_ua 5 security firefox certificates tls

我想禁用正在对我的国家发动战争的国家控制下的 CA,我该怎么做?我马上就看到一个。即使您确信不存在,问题仍然存在,这与是否存在匹配的 CA 无关。

sudo dpkg-reconfigure ca-certificates
Run Code Online (Sandbox Code Playgroud)

不幸的是,不显示about:certificateFirefox 页面上列出的 Yandex CA,并且无法在那里禁用它。它是由 , 波兰 发行的Unizeto Technologies S.A.,这个被列在列表中ca-certificates

Sim*_*ler 2

删除本地 Firefox 用户配置文件中不需要的证书

当然,我会复制答案...要从您的个人 Firefox 证书存储中删除不需要的根 CA,您必须libnss3-tools通过以下方式安装和删除不需要的根 CAcertutil

$ sudo apt install libnss3-tools --yes
$ certutil -D -d ~/.mozilla/firefox/{profile}/ -n "{CA nickname}"
Run Code Online (Sandbox Code Playgroud)

然而,我想关注更通用的、与用户无关的、系统范围的解决方案。

为所有 Firefox 用户使用系统范围的证书存储(并为每个人删除不受信任的根 CA)

默认情况下,Firefox 使用自己的证书存储,其中包含硬编码的根 CA。首次启动时,这些证书将被复制到用户的 Firefox 配置文件中。对于这些内置证书,PKCS-11使用一个模块:

火狐默认PKCS-11

这些内置模块可以通过用该库PKCS-11替换 Firefox 库来更改。libnssckbi.sop11-kit

$ sudo apt install p11-kit --yes
$ sudo mv /usr/lib/firefox/libnssckbi.so /usr/lib/firefox/libnssckbi.so.backup
$ sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/firefox/libnssckbi.so
$ sudo dpkg-divert --package firefox --add --rename \
  --divert /usr/lib/firefox/libnssckbi.so.backup /usr/lib/firefox/libnssckbi.so

Run Code Online (Sandbox Code Playgroud)

简而言之:

  • 安装p11-kit
  • 将默认PKCS-11设备库从移动libnssckbi.solibnssckbi.so.backup
  • p11-kit创建库链接libnssckbi.so
  • 当 Firefox 收到更新时,注册包转移,以避免链接替换

完成这些步骤后,重新启动 Firefox 并检查PKCS-11模块和注册的根 CA:

p11-kit 模块

如果受信任的根CA被修改sudo dpkg-reconfigure ca-certificates,所有Firefox实例将立即受到影响。