CertificateStore的Certificates.Find()实际上并未找到证书

时间:2013-01-23 15:53:16

标签: c# certificate

这是我的简单方法:

private static X509Certificate2 GetCertificateFromStore(StoreLocation storeLocation, string certName) {
    var store = new X509Store(StoreLocation.LocalMachine);
    try {
        store.Open(OpenFlags.ReadOnly);
        var certs = store.Certificates.Find(X509FindType.FindBySubjectName, certName, true);
        return certs.Count == 0 ? null : certs[0];
    }
    finally {
        store.Close();
    }
}

调试本地显示已加载store.Certificates并包含两个证书 - 默认的“localhost”一个和一个我导入的,因此正确的商店已成功打开。

但是,Find()方法始终返回空结果,无论我搜索哪个证书以及我是使用FindBySubjectName还是FindByThumbprint

任何想法都可能出错?这是一个简单的控制台应用程序,仅为学习和创建的目的而创建。测试证书加载,即项目配置中的任何其他内容或其他任何地方都不是默认值。

1 个答案:

答案 0 :(得分:3)

尝试使用false作为store.Certificates.Find()方法的第三个参数 - 您的证书可能无效且被排除在外。