我制作了一个简单的控制台应用程序,循环遍历计算机上的所有证书
private static X509Certificate2 GetSpecifiedCertificate(StoreName storeName, StoreLocation storeLocation)
{
X509Store store = new X509Store(storeName, storeLocation);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates;
if (certs.Count > 0)
{
Console.WriteLine(string.Format("found {0} certficates", certs.Count));
for (int i = 0; i < certs.Count; i++)
{
X509Certificate2 cert = certs[i];
Console.WriteLine(cert.Thumbprint);
}
}
else
Console.WriteLine("found no certficates at all");
return null;
}
使用StoreName.CertificateAuthority
和StoreLocation.LocalMachine
作为变量,在我的Windows Server 2008R2上,即使安装了更多
控制台应用输出:
在CertificateAuthority
商店位置下安装了证书
如何找到遗失的人?
我特意要检索Apple Certificate一个签名文件,但无论我如何安装公共证书,我都无法从商店循环中检索它......
我是否总是需要重启机器?得到它们有什么特别的技巧吗?
答案 0 :(得分:1)
您是如何打开证书窗口的?我认为您正在查看您帐户下的证书而不是计算机帐户。但是,代码从计算机帐户查询证书,该帐户通常安装的证书少于您的帐户。
要打开计算机帐户的证书窗口,
答案 1 :(得分:0)
一般情况下,它应该可以加载“CertificateAuthority”商店并从那里获取它,所以它有点奇怪。
但是,根据MSDN:http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.storename.aspx
应该可以像这样加载Apple证书:
var appleCert = new X509Certificate2("appleRoot.cer");
只是为了让你开始。