我正在尝试使用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;
};
答案 0 :(得分:6)
是
指纹是证书的SHA1哈希,虽然不是绝对不可能,但是很难伪造。
在技术方面,目前还没有针对SHA1的已知可行的第二原像攻击。
但是,如果有任何疑问,您可以存储整个证书,也许使用指纹作为密钥。然后,您可以将整个证书与存储的可信证书进行比较。
答案 1 :(得分:0)
指纹不是证书的一部分。 在每个证书工具中,您都可以看到此值,但它是整个证书的计算哈希值。通常它表示为SHA1,但没有障碍计算为SHA256。
Morgan Simonsen写到: https://morgansimonsen.com/2013/04/16/understanding-x-509-digital-certificate-thumbprints/