【问题标题】:How to obtain CN of the certificates in particular store?如何获取特定商店的证书CN?
【发布时间】:2011-11-29 20:09:24
【问题描述】:

我想获取 MY 商店 中存储的证书的 CN,因为我想验证 证书 在该商店中是否存在。

我不知道应该使用哪种方法来执行此任务。

我尝试使用下面的代码,但它不起作用

X509Certificate2Collection cers =  store.Certificates.Find(X509FindType.FindBySubjectName,"Root_Certificate",false);

if(cers.Count>0)
{

//certificate present

}

else
{

//certificate not present

}

subjectName 是否提供 CN

还有其他方法吗?

请建议我如何检查特定证书是否存在,我想使用 CN 进行。

【问题讨论】:

    标签: c# .net ssl ssl-certificate x509certificate


    【解决方案1】:

    您可以使用store.Certificates.Find(X509FindType.FindBySubjectName, "SubjectName", false) 按主题名称搜索证书的功能。不要在主题名称中包含“CN=”。

    要更具体地搜索,​​您可以使用指纹搜索您的证书。 以下代码示例演示了这一点:

    X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
    store.Open(OpenFlags.ReadOnly | OpenFlags.IncludeArchived);
    
    foreach (var c in store.Certificates)
    {
      Console.Out.WriteLine(c.Thumbprint);
      Console.Out.WriteLine(c.Subject);
    }
    
    // Find by thumbprint
    X509Certificate2Collection col =
    store.Certificates.Find(X509FindType.FindByThumbprint, "669502F7273C447A62550D41CD856665FBF23E48", false);
    
    store.Close();
    

    我在代码示例中添加了一个 foreach 循环,以遍历所选商店中的所有证书。 您的证书必须在此处列出。如果没有,您可能使用了错误的商店。 请注意,机器当前用户有一个我的商店。所以,一定要开正确的商店。

    要获取证书的指纹,请按以下步骤操作:

    1. 打开 certmgr.msc。
    2. 双击您的证书。
    3. 转到详细信息选项卡。
    4. 在指纹下,您可以找到证书的指纹。

    希望,这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 2020-08-06
      相关资源
      最近更新 更多