只是使事情变得困难,Linux有多个用于处理证书的库。
如果您使用的是Mozilla的NSS,则可以使用certutil的-t trustargs
选项主动解除信任(其术语)证书:
$ certutil -d <path to directory containing database> -M -t p -n "Blue Coat Public Services Intermediate CA"
对于Firefox,<path to directory containing database>
通常~/.mozilla/firefox/<???>.profile
那里<???>
是一些随机寻找的字符。(certutil例如在ubuntu的libnss3-tools软件包中)
细目如下:
-M
修改数据库
-t p
将信任设置为“禁止”
-n
对指定的证书进行操作
即使在NSS中,并非所有应用程序都共享同一数据库。因此您可能必须重复此过程。例如,要对Chrome执行相同的操作,请将更改-d <path>
为-d sql:.pki/nssdb/
。
$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"
但是,并非所有应用程序都使用NSS,因此这不是一个完整的解决方案。例如,我不相信使用OpenSSL库可以做到这一点。
结果,任何使用OpenSSL来提供其证书链构建的应用程序(TLS,IPSec等)都将信任带有Blue Coat证书的链,并且您将无法对其进行任何操作,除非删除从其签名的RootCA。您的信任锚存储(考虑到它是Symantec Root CA,这很愚蠢,因为您最终会不信任Internet的一半),而可以将依赖NSS的应用程序配置为更精细,以不信任其中包含Blue Coat证书的任何链。
例如,我相信OpenVPN使用OpenSSL作为其证书库,因此,如果您要连接到使用OpenVPN的商业VPN提供商,那么大哥可能会在您不知情的情况下监听您的OpenVPN流量。如果您真的对此感到担心,那么请检查您的商业VPN提供商的根CA是谁-如果是Symantec / Verisign,那么也许该放弃他们了吗?
请注意,SSH不使用X509证书,因此您可以使用SSH连接和建立隧道,而不必担心Blue Coat MITM攻击。