不信任Linux中的中间CA?


18

这个博客

中间CA是由根CA签名的证书,可以为任何网站签署任意证书。

它们与根CA一样强大,但是没有系统信任的完整列表,因为根CA可以随意创建新的CA,而您的系统将一见钟情。CT中记录了数千。

本月突然出现了一个有趣的消息,显然是在2015年9月生成的:“蓝色外套公共服务中间CA”,由Symantec签署。(到目前为止,此CA签署的证书尚未到达CT日志或Censys。)

我认为这是写一个如何明确不信任中间件CA的好时机,否则该中间件CA在OS X中将是可信的。这不会阻止根CA将新的中间件交给同一组织,但总比没有好。

当我在Ubuntu中尝试博客中的步骤时,我下载了此证书https://crt.sh/?id=19538258。当我打开.crt时,它会导入到Gnome密钥环中,但是导入后我找不到找到“取消信任”证书的方法。

Answers:


8

只是使事情变得困难,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攻击。


我更新了问题以表明,当我双击证书时,它已导入到gnome密钥环中。我确实设法在下面的答案中找到将其导入Firefox的方法。
拉斐尔

对于OpenSSL,不只是删除证书就等于不信任它吗?它只能验证毕竟知道的证书。
布拉奇利'16

1
@Bratchley-如果将可疑证书作为TLS握手的一部分发送(应该发送)怎么办?除非有一种方法(就像Mozilla NSS,Windows和OS-X一样)坚持认为它始终是不受信任的,否则它只会被信任。
garethTheRed

@garethTheRed我可能丢失了一些内容,但是如果库要求对证书进行验证,那么执行CRL或删除受信任的根CA都无法解决问题吗?无论是客户端证书还是服务器证书,都仍需要验证。
布拉奇利'16

1
是。Bluecoat获得 Verisign颁发的用于中间人设备的CA证书。OP询问如何不信任此证书。因此,这是关于不信任次级证书,而当您不想取消信任根证书(Verisign)时,该证书不会被上级颁发CA(在这种情况下为Root)撤销。
garethTheRed

0

我还不能发表评论,所以我不得不在这里发表评论,在Ubuntu Gnome 15.10上,当我使用@garethTheRed的方法时,我得到:

~$ certutil -d ~/.mozilla/firefox/<directory>.default -M -t p -n "Blue Coat Public Services Intermediate CA" 
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_BAD_DATABASE: security library: bad database.

~$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_UNRECOGNIZED_OID: Unrecognized Object Identifier.

“ Blue Coat Systems,Inc.” 也不起作用。

(这是我导入的证书:https : //crt.sh/?id=19538258


您是否首先下载并导入了证书?
拉斐尔

是的,我导入了一个: crt.sh/?id=19538258。(似乎我现在可以发表评论!:)
对角线

我认为您只能对自己的答案发表评论。我实际上尚未尝试过该程序。
拉斐尔

请在下面查看我的答案
拉斐尔

@raphael-我尝试在下面进行编辑,让您知道:虽然上面链接将“ -t p”描述为“禁止(明确地不信任)”,但Ubuntu 15.10手册页将其描述为“ p-有效对等体”。我希望你没有做错事。
对角线
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.