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

本文关键字:安全 测试 X509Certificate Tumbprint 是否 属性 无效 证书 | 更新日期: 2023-09-27 18:29:19

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

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

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;
     };

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

是。

指纹是证书的SHA1散列,虽然不是绝对不可能,但伪造起来非常困难。

从技术角度来说,目前还没有已知可行的对SHA1的第二次图像前攻击。

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

指纹不是证书的一部分。在每个证书工具中,您都可以看到这个值,但它是根据整个证书计算的哈希值。通常它被表示为SHA1,但计算为SHA256没有任何障碍。

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