【问题标题】:How can I check if a certificate is self-signed?如何检查证书是否是自签名的?
【发布时间】:2015-12-09 08:53:50
【问题描述】:

我正在使用 C#.NET,需要将一堆证书安装到 Windows 证书存储中。

我需要检查哪些证书是根证书(即自签名),以便我可以将它们安装到“受信任的根证书”存储中。

我正在使用标准的X509Certificate2 类。我目前的想法是检查IssuerSubject是否相同。

我注意到X509Certificate2Issuer - IssuerNameSubject - SubjectName

IssuerSubjectIssuerNameSubjectName 进行比较是否更好?还是真的不重要?

另外,这是一种可靠的方法还是我最好使用另一种方法?

【问题讨论】:

    标签: c# .net certificate self-signed x509certificate2


    【解决方案1】:

    看到这个帖子:java - Find if a certificate is self signed or CA signed

    虽然不是 C#,但解决方案注释中的注释

    如果主题和发行者相同,则为自签名

    表示您尝试验证它的方式是正确的。

    IssuerNameSubjectName 返回一个 DistinguishedName,其中包含 RawData(一个 byte[] 包含颁发者/主题的原始信息)。你最好比较这个字段,虽然我相信比较SubjectIssuer同样有效。

    所以,你可以这样写:

    public static bool IsSelfSigned(X509Certificate2 cert)
    {
        return cert.SubjectName.RawData.SequenceEqual(cert.IssuerName.RawData);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 2012-05-05
      • 2021-12-28
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      相关资源
      最近更新 更多