pur*_*ang 6 .net c# ssl ssl-certificate x509certificate
我想获取存储在MY商店中的证书的CN,因为我想验证该商店中是否存在证书.
我不知道应该使用哪种方法来执行此任务.
我尝试使用下面的代码,但它不起作用
X509Certificate2Collection cers = store.Certificates.Find(X509FindType.FindBySubjectName,"Root_Certificate",false);
if(cers.Count>0)
{
//certificate present
}
else
{
//certificate not present
}
Run Code Online (Sandbox Code Playgroud)
subjectName是否给CN?
还有其他方法吗?
请建议我如何检查特定证书是否存在,我想用CN来做.
Han*_*ans 12
您可以使用该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();
Run Code Online (Sandbox Code Playgroud)
我在代码示例中添加了一个foreach循环,以迭代所选商店中的所有证书.您的证书必须列在那里.如果没有,你可能使用了错误的商店.请注意,机器和当前用户有我的商店.所以,一定要打开合适的商店.
要获取证书的指纹,请按以下步骤操作:
希望这可以帮助.