列出并删除非官方安装的 CA 证书

列出并删除非官方安装的 CA 证书

本文揭露大约 18% 的 HTTPS 连接如何被 MITM 代理拦截。正如伟大的相关论文状态:

为了规避这种验证,本地软件在安装时将自签名 CA 证书注入客户端浏览器的根存储中。
[...]
与普遍看法相反,公钥固定 [19](一种允许网站将连接限制到特定密钥的 HTTPS 功能)并不能阻止这种拦截。Chrome、Firefox 和 Safari 仅在证书链终止于浏览器或操作系统附带的颁发机构时才强制执行固定密钥。当链终止于本地安装的根(即管理员安装的 CA 证书)时,将跳过额外的验证[34]。

这很常见关于公司、桌面防病毒和恶意软件/广告软件添加根 CA。有时甚至有正当理由。但让情况更加明朗SSL 网络浏览与最弱的 CA 一样强大(这包括 DNS,如果HTTPS 上的 DNS)。


我想至少从三个方面检查我的 HTTPS 流量是否被拦截(最好只使用 CLI):

因此真正的问题是:

  • 如何列出非官方安装的 CA 证书(不附带 Ubuntu/Firefox/Chrome)以避免 MITM 攻击/HTTPS 拦截?
  • 如何将受信任的证书存储重置为其默认值?

一些研究以及相关问题

  • 检查我的https看上去很旧而且不值得信赖

  • 铬合金chrome://settings/certificates
    这是返回这些命令的一些子集吗?

    # System wide (I)
    awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt
    
    # System wide (II) (`p11-kit` package)
    trust list
    
  • 火狐

    certutil -L -d ~/.mozilla/firefox/*.default*/
    
  • 我已经sudo update-ca-certificates -v -f。这只是更新而不会删除任何已安装的证书?

参考

答案1

dpkg -S somefile将告诉您 somefile 属于哪个包。您可以使用dpkg --verify pkgnamedebsums查看它们是否已被修改。

您可以使用它们来验证/etc/ca-certificates.conf它所引用的目录——基本上,验证 CA 文件属于它们中的ca-certificates某个dpkg-reconfigure -plow ca-certificates。您可能已经猜到了,update-ca-certificates使用这些数据来重新创建全局 CA 存储文件。

对于 Chrome 和 Firefox 等特定应用商店,我没有简单的答案。基本上,您首先要查找全局配置目录(如果有)(dpkg -L),然后查看每个用户配置文件,看看该配置文件中是否安装了自定义 CA:查看文件,与新文件进行区分,检查帐户是否由公司管理,... StackOverflow 或 SuperUser 可以更直接地提供帮助。

必须注意:安装不受信任的第三方软件包会以多种方式扰乱系统(实际上,运行任何不受信任的脚本)。我认为你的问题仍然合理,因为良性软件有时会添加 CA,并且不会试图隐藏这一事实。但是,如果你怀疑有人可能背着你修改了你的系统,那么远的重新安装更安全。

相关内容