当您知道无效证书是安全的时,测试X509Certificate.Thumbprint属性是否安全?

我正在尝试使用SmtpClient.Send以编程方式发送电子邮件。 我正在尝试发送电子邮件时收到AuthenticationException 。 这是因为证书validation程序失败。

我知道证书是正确的,但我也明白,信任所有证书并不安全,就像这样做的建议:

 ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { return true; }; 

所以我想知道测试Thumbprint是否足够安全已知的有效证书指纹,如下所示:

 ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { if (sslPolicyErrors == SslPolicyErrors.None) return true; else if (certificate.GetCertHashString().Equals("B1248012B10248012B")) return true; return false; }; 

是。

指纹是证书的SHA1哈希,虽然不是绝对不可能,但是很难伪造。

在技​​术方面,目前还没有针对SHA1的已知可行的第二前映像攻击。

但是,如果有任何疑问,您可以存储整个证书,也许使用指纹作为密钥。 然后,您可以将整个证书与存储的可信证书进行比较。

Thumbprint不是证书的一部分。 在每个证书工具中,您都可以看到此值,但它是从整个证书计算的哈希值。 通常它表示为SHA1,但没有障碍计算为SHA256。

Morgan Simonsen写道: https : //morgansimonsen.com/2013/04/16/understanding-x-509-digital-certificate-thumbprints/