[英]How can I check if a certificate is self-signed?
我正在使用C#.NET,需要在Windows证书库中安装一堆证书。
我需要检查哪些证书是根证书(即自签名),因此我可以将它们安装到“受信任的根证书”存储中。
我正在使用标准的X509Certificate2
类。 我目前的想法是检查Issuer
人和Subject
是否相同。
我注意到X509Certificate2
有Issuer
- IssuerName
和Subject
- SubjectName
。
将Issuer
与Subject
或IssuerName
与SubjectName
进行比较是否更好? 或者它真的不重要吗?
此外,这是一种可靠的方法还是我会更好地使用另一种方法?
请参阅此文章: java - 查找证书是自签名还是CA签名
虽然它不是C#,但解决方案的评论指出
如果主题和发行者是相同的,则它是自签名的
意味着你对你试图验证它的方式是正确的。
IssuerName
和SubjectName
返回一个DistinguishedName
,其中包含RawData
(包含发行者/主题的原始信息的byte[]
)。 你最好比较这个领域,但我相信比较Subject
和Issuer
同样有效。
所以,你可以这样写:
public static bool IsSelfSigned(X509Certificate2 cert)
{
return cert.SubjectName.RawData.SequenceEqual(cert.IssuerName.RawData);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.