如何获取特定存储区证书的CN

本文关键字:存储区 证书 CN 何获取 获取 | 更新日期: 2023-09-27 18:10:29

我想获得我的存储中存储的证书的CN,因为我想验证证书在该存储中是否存在。

我不知道应该用哪种方法来完成这项任务。

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

X509Certificate2Collection cers =  store.Certificates.Find(X509FindType.FindBySubjectName,"Root_Certificate",false);
if(cers.Count>0)
{
//certificate present
}
else
{
//certificate not present
}

subjectName给出CN吗?

还有其他方法吗?

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

如何获取特定存储区证书的CN

您可以使用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循环,以遍历所选存储中的所有证书。你的证书必须列在那里。如果没有,你可能用错了商店。注意,对于机器当前用户,有一个My存储。所以,一定要开对店。

按照以下步骤获取证书的拇指指纹:

    开放certmgr.msc
  1. 双击您的证书。
  2. 进入详细信息选项卡
  3. 在thumbprint下面,您可以找到您的证书的拇指指纹。

希望有帮助。