免责声明:我是 SSL 新手,发现它有点令人困惑,需要尽快得到答案。
有人告诉我我的“密钥库”可能被损坏,所以我正在尝试检查并弄清楚。我使用的是 Arch Linux。
我看到了很多有趣的东西/etc/ssl/certs
(我想问题 1 是“这就是‘密钥库’吗?”),但当我检查完所有文件readlink -f
并删除重复项后,该列表变得更加合理。看起来我的所有证书都来自/usr/share/ca-certificates/
。它们大部分位于mozilla/
子目录中,但还有其他子目录,例如:
brazil.gov.br/
cacert.org/
debconf.org/
gouv.fr/
signet.pl/
spi-inc.org/
我的主要问题是我不知道如何发现可疑证书。简单地访问这些网站似乎违反直觉(即它们可能具有与最初可能破坏我的密钥库相同的恶意软件)。
ca-certificates
软件包是由我的软件包管理器安装的;我可以先清除它,然后重新安装吗?这样做安全吗?
更新:
促使我进行调查的问题是无法识别的 VeriSign 证书。具体来说,我收到了一个我并不(但应该)拥有且信任的证书签名。
我在 VeriSign 的网站上找到了这个页面,其中列出了一大堆证书: http://www.verisign.com/support/roots.html ...因此我开始检查我已安装的证书的指纹与网站上的证书的指纹。
for cert in /etc/ssl/certs/Veri[Ss]ign*; do
printf "%s: " $cert
openssl x509 -noout -in $cert -fingerprint
done
结果:一个不匹配。听起来也很重要:“VeriSign Class 1 Public Primary CA”。
并发症:我的包管理器告诉我,我现有的证书校验没问题。此外,我应该拥有的证书上的指纹也匹配两者都不我拥有的那个,也不是 VeriSign 网站上列出的那个。
答案1
CA 向最终实体(例如 Web 服务器)颁发的证书通常通过中间(又称链)CA 颁发。这有几个原因。当 CA 首次开始以这种方式颁发证书时,服务器运营商无法安装中间 CA,因此访问没有链证书缓存(或安装)副本的用户的情况非常常见,他们同时拥有根证书和 EE 证书,但无法将它们连接起来。这种情况现在不太常见,但可能是您面临的问题 - 这是由于访问公共服务器而导致的 - 如果是这样,我会帮您查看一下。您可以随时查看无法验证的 EE 证书的颁发者名称,看看是否可以在 VeriSign 的网站上找到匹配的“中间 CA”证书。如果可以,您应该能够使用中间 CA 验证 EE,使用根 CA 验证中间 CA。如果您要手动执行此操作,我建议您也进行证书验证 - VeriSign 在其所有 CA 上都支持 OCSP...大多数(所有?)高级 CA 都支持这种形式的实时/近实时验证...否则,下一个最佳选择是 CRL。