我们有一个 .Net 应用程序连接到我们托管的服务器上的 Web 服务,并且我们在这些服务器上将 SSL 证书绑定(bind)到 https/443。有时这些 SSL 证书是自签名的,因此我们并不完全依赖 X509Certificate2.Verify() 方法和我们为 ServicePointManager.ServerCertificateValidationCallback 编写的方法中的 SslPolicyErrors.None 枚举,因为我们的证书并不总是有效。
我们有第二个步骤,检查哈希字符串的签名 (X509Certificate.GetCertHashString()) 并将其与“已批准”证书列表进行比较。这样,如果它是已知证书,我们可以为回调返回 true。
在我们的一个安装站点中,当连接到完全相同的 Web 服务器时,我们会得到一个不同的哈希字符串。在将 X509Certificate 对象上的每个属性打印到日志文件后,我发现连接时“颁发者”值不同。从他们用户的工作站到他们的网络硬件,然后到我们的服务器,一路上有些东西正在修改证书。当我们的应用程序验证证书时,首先它不再是受信任的机构,其次当它检查哈希字符串时,它不在批准列表中(更改颁发者似乎更改了哈希)。
任何人都可以提供有关他们如何做到这一点的任何想法吗?此外,知道如何在 .Net 中以编程方式执行此操作吗?
谢谢, 丹
最佳答案
关于.net - 服务器修改了 SSL 证书 "Issued by",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11296767/