首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X509Store Certificates.Find FindByThumbprint

X509Store Certificates.Find FindByThumbprint
EN

Stack Overflow用户
提问于 2015-06-16 04:29:17
回答 2查看 1.9K关注 0票数 3

我在使用store.Certificates.Find时遇到了问题。我使用WindowsServer2008Net3.5的R2。证书由以下人员安装:

代码语言:javascript
复制
public static void AddCertificate(X509Certificate2 cert, StoreName name = StoreName.My, StoreLocation location = StoreLocation.LocalMachine)
    {
        var store = new X509Store(name, location);
        store.Open(OpenFlags.ReadWrite);
        store.Add(cert);
        store.Close();
    }

然后,通过以下方法查找证书

代码语言:javascript
复制
string certThumbprint = "XXXX";
var certificates = store.Certificates.Find(X509FindType.FindByThumbprint, commandLineArgs.CertificateThumbprint, true);

if (certificates.Count == 0)
  {
    throw new ArgumentException("No certificate found with given thumbprint.");
  }

不应抛出异常,但有时似乎会抛出异常。它每100次抛出5次异常。

我搜索并发现了“无形的第一个字符”问题,但在我的例子中,拇指指纹确实是硬编码的。我不会从任何地方看到指纹。使用NET.4.5运行在windows server 2012上的确切代码从来没有给我带来任何问题。这只适用于具有NET.3.5的windows服务器。我想知道为什么只在WS2008R2上的结果是不一致的?

EN

回答 2

Stack Overflow用户

发布于 2015-06-16 07:50:01

我认为问题可能在于您的用户对证书没有权限。

尝尝这个

  1. 下载和安装: Windows证书配置工具(WinHttpCertCfg.exe) http://www.microsoft.com/en-us/download/details.aspx?id=19801
  2. 运行: WinHttpCertCfg.exe -g -c LOCAL_MACHINE\Store -s "IssuedToName“-a "AccountName”
票数 0
EN

Stack Overflow用户

发布于 2015-06-16 10:58:50

请验证证书确实位于插入证书的LocalMachine\My存储区。我假设您会在商店中找到证书,但是当您双击它时,您会看到,这是不可信的。我的假设是证书链没有构建到受信任的根CA。

现在,修改代码以搜索证书(我已经将最后一个参数更改为false)

代码语言:javascript
复制
var certificates = store.Certificates.Find(X509FindType.FindByThumbprint, commandLineArgs.CertificateThumbprint, false);

或者(IMHO更好地)通过将CA证书导入到适当的存储区(根、中间当局)来使导入的证书可信。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30858815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档