X509Store.Certificates集合中缺少证书

时间:2017-01-06 14:07:34

标签: .net certificate x509

我正在我的电脑上测试以下代码:

private static void Main(string[] args)
{
    X509Store x509Store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

    x509Store.Open(OpenFlags.ReadOnly);

    foreach (var x509StoreCertificate in x509Store.Certificates)
    {
        Console.WriteLine(x509StoreCertificate.Thumbprint);
    }

    x509Store.Close();

    Console.WriteLine("Finished.");
    Console.ReadLine();
}

当我分析控制台中显示的指纹列表时,我注意到我今天导入的证书没有出现在列表中。

我导入的证书是以下列方式完成的:

  • 打开MMC并添加Certificates管理单元。
  • 我在Computer account级别打开了管理单元,
  • PersonalTrusted Root Certification Authorities中,我导入了.pfx证书文件。

完成上述操作后,我可以在证书列表中看到我提到的两个区域的证书。实际上,当我运行以下Powershell脚本时:

cls
Set-Location Cert:\LocalMachine
dir -Recurse | where {$_.Thumbprint -ne $null -and $_.Thumbprint.ToLower() -eq "‎‎thumbprint omitted"}

它找到证书的两个位置,其中Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\My就是其中之一。

所以我不清楚为什么C#控制台应用程序没有在Certificates集合中列出此证书。

我可能只是错过了一些明显的东西,但任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

Urgh :(

原来我已经从cert属性对话框中复制了指纹,这意味着它在字符串的开头有„,这是我最初看不到的。从指纹的前面删除该段后,我的代码发现了证书没有任何障碍。