当您知道无效证书是安全的时,测试 X509Certificate.Thumbprint 属性是不是安全?
Posted
技术标签:
【中文标题】当您知道无效证书是安全的时,测试 X509Certificate.Thumbprint 属性是不是安全?【英文标题】:Is it safe to test the X509Certificate.Thumbprint property when you know an invalid certificate is safe?当您知道无效证书是安全的时,测试 X509Certificate.Thumbprint 属性是否安全? 【发布时间】:2016-04-11 02:28:18 【问题描述】:我正在尝试使用 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;
;
【问题讨论】:
【参考方案1】:是的。
指纹是证书的 SHA1 哈希,虽然并非绝对不可能,但极难伪造。
在技术方面,目前尚无已知可行的对 SHA1 的第二原像攻击。
但是,如果有任何疑问,您可以存储整个证书,也许使用指纹作为密钥。然后,您可以将整个证书与您存储的可信证书进行比较。
【讨论】:
从.NET 4.8开始,可以验证SHA-256指纹:***.com/q/11586206/850848#66776112【参考方案2】:指纹不是证书的一部分。 在每个证书工具中,您都可以看到这个值,但它是整个证书的计算散列值。通常以 SHA1 表示,但计算为 SHA256 没有障碍。
Morgan Simonsen 写道: https://morgansimonsen.com/2013/04/16/understanding-x-509-digital-certificate-thumbprints/
【讨论】:
以上是关于当您知道无效证书是安全的时,测试 X509Certificate.Thumbprint 属性是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章