【问题标题】:Unable to get a certificate from store in c# by common name无法通过通用名称从 C# 中的商店获取证书
【发布时间】:2012-08-15 19:32:38
【问题描述】:

在 .Net 4.0 中,我无法使用 X509Store 的 find 方法从自定义存储中获取证书。使用以下代码:

X509Store store = new X509Store(storeName, StoreLocation.CurrentUser);

store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySubjectName, commonName,false);

【问题讨论】:

  • 证书是否肯定在 CurrentUser 存储而不是机器存储?
  • 你得到一个异常,还是 Find 只返回 null?
  • @ShellShock 它将提供一个包含 0 个项目的集合,并且我得到一个超出范围的异常:索引超出范围。必须是非负数且小于集合的大小。参数名称:index 当我尝试使用集合时
  • @BobVale 是的,它显示了 MMC 中的当前用户存储

标签: c# .net cryptography x509certificate2


【解决方案1】:

已修复

抱歉,我犯了一个基本错误,我忘记将私钥设为可导出,因此一旦我将密钥设为可导出代码开始工作,加密 API 就不会将私钥公开给 .net。

【讨论】:

  • 好的,过一会你可以接受自己的答案。好吧,这是一个基本错误,但我相信会有很多其他人犯同样的错误:)
猜你喜欢
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 1970-01-01
  • 2022-06-10
  • 2014-05-10
  • 1970-01-01
相关资源
最近更新 更多