这是我的简单方法:
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();
}
}
Debug locals 显示store.Certificates
已加载并包含两个证书 - 默认的“localhost”一个和一个我已导入,因此正确的存储已成功打开。
但是,Find()
无论我搜索哪个证书以及是否使用FindBySubjectName
或,该方法总是返回一个空结果FindByThumbprint
。
有什么想法可能是错的吗?它是一个简单的控制台应用程序,仅用于学习和测试证书加载,即项目配置或其他任何地方几乎没有默认设置。