如何检测目标域的伪造可信个人/根SSL证书

时间:2012-03-05 10:29:50

标签: c# security ssl ssl-certificate

有人可以添加假SSL证书。进入可信证书集合。我怎样才能发现这些假货?如何验证证书是否正式,是否有可供比较的列表?

我已经添加了法律和广告的屏幕截图。一个假的(由Fiddler创建):

enter image description here

此外: 为确保您的敏感SSL通信安全,您必须使用常见受信任机构的证书。如果某人安装了Fiddler - 或者恶意软件安装了自己的证书 - 那么我需要取消任何通信尝试并在我的应用程序中在客户端的PC上发出警报。

ADDITION 2 我只关心最终用户的电脑和电脑之间的沟通。 Google文档。我们知道Google Docs网站的公共证书由 Google Internet Authority "提供。我想我必须比较它和它在用户的电脑上安装了Google文档的证书。

最后一句话:

我需要在任何SSL通信之前简单地比较目标站点使用的证书与目标站点的原始SSL证书。

更多信息:This link

3 个答案:

答案 0 :(得分:3)

没有单一的“官方名单”。您必须将您的列表与其他人的列表进行比较。

  • Windows有自己的列表,供Internet Explorer使用。

  • Firefox维护一个单独的列表。

我不了解Chrome,Safari或Opera。

但是,您需要将您的列表与您知道正确的其他列表进行比较,例如来自同事的计算机。

答案 1 :(得分:2)

你做不到。如果用户添加了它,那意味着她信任它。而且,证书可以有效而不属于“官方”列表。

答案 2 :(得分:1)

每个应用程序维护(或依赖于其他应用程序)受信任的根证书颁发机构列表。 Windows有自己的列表,OpenSSL有自己的列表,所有主流浏览器都有自己的列表(Chrome使用或可以使用Windows,如果内存服务)。

如果您创建一个Windows应用程序,最好的选择是依赖系统列表,因为它会定期更新(如果您带有自己的列表,则还必须维护它)。

需要注意的一点是,受信任机构颁发的证书并不代表可信证书。有些证书是通过黑客攻击发布的(这种情况至少发生在去年的两个中间CA中),其他人的私钥被泄露,这导致需要撤销这些证书。可以通过检查CRL(CA发布的撤销列表)或使用OCSP(在线证书状态协议)来检查撤销状态。 无论您在哪里获得可信CA的列表,都需要使用它们。

相关问题