由服务器修改的SSL证书“颁发者”

时间:2012-07-02 15:34:04

标签: .net ssl certificate

我们有一个.Net应用程序连接到我们托管的服务器上的Web服务,我们在这些服务器上绑定了https / 443的SSL证书。有时这些SSL证书是自签名的,因此我们不完全依赖于我们为ServicePointManager.ServerCertificateValidationCallback编程的方法中的X509Certificate2.Verify()方法和SslPolicyErrors.None枚举,因为我们的证书并不总是有效的。

我们有一个辅助步骤,检查哈希字符串的签名(X509Certificate.GetCertHashString()),并将其与“已批准”证书列表进行比较。这样,如果它是已知证书,我们可以为回调返回true。

在我们的一个安装站点中,当连接到完全相同的Web服务器时,我们会得到一个不同的哈希字符串。在X509Certificate对象的每个属性上打印到日志文件后,我发现连接时“颁发者”值不同。从用户的工作站到网络硬件,然后到我们的服务器,一路上正在修改证书。当我们的应用程序验证证书时,首先它不再是受信任的权限,第二次检查哈希字符串时,它不在批准的列表中(更改发行者似乎更改了哈希)。

任何人都可以提供有关他们如何做到这一点的任何想法吗?此外,任何想法如何在.Net中以编程方式进行?

谢谢, 丹

2 个答案:

答案 0 :(得分:2)

有问题的连接是否可能被SSL会话中的bluecoatwebsense等企业代理拦截?

答案 1 :(得分:0)

更改证书会破坏其签名,并且当您的验证显示某些内容会改变证书时,您应该查看 更改证书的内容,而不是“如何”更改证书。

更改很简单 - 因为证书是自签名的,有人可以使用自己的密钥对创建另一个自签名证书,并将不同的Subject或Issuer放入证书。没有大碍。显然,目标是通过安装中间人代理来捕获和解码流量。