【问题标题】:Could not able to get X509Certificate2 certificate by code C#无法通过代码 C# 获取 X509Certificate2 证书
【发布时间】:2012-05-18 11:47:00
【问题描述】:

我想从我的商店中查找证书,但使用以下代码我无法获得证书。它总是返回 null。

我的代码有什么问题?

更新:

我通过探索存储对象复制了我的证书指纹并将其与我的指纹字符串进行比较,它返回 false!我认为在 VS2010 IDE 中解释字符串的问题或复制粘贴问题你可以在下图中看到。因此,它应该忽略列表中的证书。有没有人遇到过这种类型的问题?

【问题讨论】:

  • 您的商店位置是 CurrentUser。您确定证书的存储位置与 CurrentUser 位置匹配吗?
  • 是的,我确定它位于那里,请查看我更新的问题

标签: c#-4.0 x509certificate2


【解决方案1】:

证书集合是空的,因为没有带有该指纹的证书。 检查:

  • 证书存在于您的当前用户中

  • 证书存放在个人文件夹中

试试:

  • 使用mmc验证以上事情

  • 使用X509Store store = new X509Store(StoreName.Root, StoreLocation.CurrentUser);

编辑:

以下是否返回任何有用的东西:

X509Certificate2Collection col = store.Certificates;

foreach (var currCert in col)
{
     var currThumbprint = currCert.Thumbprint;
     if (thumbprint.ToUpperInvariant() == currThumbprint)
     {
         x509Certificate2= currCert;
         break;
     }
}

【讨论】:

  • 是的,我确定它位于那里,请查看我更新的问题
  • 你会试试上面的代码吗 - 这是一个简单的自定义 FindByThumbprint
  • 我已经尝试过上面的代码,尽管证书指纹相同,但它仍然跳过。非常棘手的问题!。
  • 你能写一个快速的 char 到 char 比较两个指纹字符串,看看它失败的地方吗?想不出别的——也许是编码(怀疑)或某些字符的问题
  • 嘿解决了这个问题,当我手动编写该指纹而无需复制/粘贴时。
【解决方案2】:

您的指纹中可能有不可见/零长度的字符,尤其是在开头或结尾处。测量您提供的指纹长度(“35ED..”)。它应该比显示的要大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2011-03-14
    • 2015-04-12
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多