了解服务器上的证书检索

时间:2012-10-05 12:29:43

标签: c# x509certificate

我制作了一个简单的控制台应用程序,循环遍历计算机上的所有证书

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.CertificateAuthorityStoreLocation.LocalMachine作为变量,在我的Windows Server 2008R2上,即使安装了更多

,我也只能获得3个证书

控制台应用输出: enter image description here

CertificateAuthority商店位置下安装了证书 enter image description here

  

如何找到遗失的人?

我特意要检索Apple Certificate一个签名文件,但无论我如何安装公共证书,我都无法从商店循环中检索它......

  

我是否总是需要重启机器?得到它们有什么特别的技巧吗?

2 个答案:

答案 0 :(得分:1)

您是如何打开证书窗口的?我认为您正在查看您帐户下的证书而不是计算机帐户。但是,代码从计算机帐户查询证书,该帐户通常安装的证书少于您的帐户。

要打开计算机帐户的证书窗口,

  1. 在命令提示符处执行mmc。
  2. 文件|添加/删除管理单元。
  3. 添加证书。
  4. 选择计算机帐户。

答案 1 :(得分:0)

一般情况下,它应该可以加载“CertificateAuthority”商店并从那里获取它,所以它有点奇怪。

但是,根据MSDN:http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.storename.aspx

应该可以像这样加载Apple证书:

var appleCert = new  X509Certificate2("appleRoot.cer");

只是为了让你开始。