无法使用FindByThumbprint找到X.509证书。

9

当我尝试实例化第三方Web服务客户端时,出现以下错误:

无法使用以下搜索条件找到X.509证书:
StoreName 'My',StoreLocation 'LocalMachine',FindType 'FindByThumbprint',
FindValue '[此处为值]'。

奇怪的是,我们在另一台开发机器上运行正常,但它却坚决不愿在我的机器上工作。我们已经按照相同的方式将证书添加到每台机器的证书存储中(据我们所知)。

有人能提供关于如何排除故障的建议吗?

2个回答

4
也许您的计算机上没有安装证书。请在Internet Explorer中查看(工具| Internet选项|内容选项卡|证书),查看已安装的客户端证书。
在“个人”选项卡下,您可以查看用户帐户的已安装证书(因为您正在使用“My”存储名称)。双击“详细信息”选项卡下安装的证书,您可以找到可用于查找值属性(如指纹)的所有信息。
请注意,在Windows 10上,证书位于本地“计算机”存储中。在Windows Server 2008 R2及以下版本中,它们将在“个人”中找到。

如果证书已经安装,但FindByThumbprint对我不起作用,而使用FindBySubjectName则可以。你有什么想法吗? - Bryan
7
我刚刚找到了解决我的问题的答案,并希望在这里发布,以防其他人也遇到同样的问题。 问题是FindValue字符串中有一些Unicode控制字符,这些字符在Visual Studio中没有显示出来。 当我使用HEX编辑器时,我看到了这些字符。 我将它们删除后,就能够找到证书了。 - Bryan
1
另外注意...指纹应该没有任何空格。http://msdn.microsoft.com/zh-cn/library/ms734695.aspx - Adam Spicer
1
右键单击文件,选择“打开方式”,二进制编辑器,看看该字符串中是否有一些额外的字节... @.@ Bryan,给你加1分 :) - Jeroen Landheer
在Windows 10 Pro上的VS2019中,我遇到了与WcfTestClient类似的问题。上面提到的证书需要放置在本地的“计算机”存储中,而不是“个人”存储中。Windows Server 2008 R2及以下版本仍使用“个人”存储。 - Wizard

1

以下是我使用的方法:

无效 - 252967BFBCD543D93A79AFD86D4A5117A9C6767B

添加0x(十六进制数字常量的前缀)

有效 - 0x252967BFBCD543D93A79AFD86D4A5117A9C6767B


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接