我正在尝试使用 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;
};
最佳答案
是的。
指纹是证书的 SHA1 哈希,虽然并非绝对不可能,但极难伪造。
在技术方面,目前还没有已知的针对 SHA1 的可行的第二原像攻击。
但是,如果有任何疑问,您可以存储整个证书,也许使用指纹作为 key 。然后您可以将整个证书与您存储的可信证书进行比较。
关于c# - 当您知道无效证书是安全的时,测试 X509Certificate.Thumbprint 属性是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34642606/