使用"FindBySubjectName"找不到X.509证书

Chr*_*xon 13 ssl wcf certificate wcf-security x509certificate

经过与WCF安全的残酷斗争后,我想我现在处于最后阶段,可以看到光明.

我已经在我的服务器上安装了客户端证书,现在,按照建议,它现在位于证书库的"受信任的人"文件夹中.

但是,当我尝试阅读证书申请 - >服务时,我收到此错误:

使用以下搜索条件找不到X.509证书:StoreName'My',StoreLocation'CurrentUser',FindType'FindBySubjectName',FindValue'Forename Surname'.

使用"Forename姓氏"作为我的证书的"已发布"部分.在我看过的所有教程中,这只是一个字; 这是问题吗?我从我的CA收到了我的证书,上面写着这两个字,带有空格.

任何人都遇到过这种情况,有什么我公然做错了吗?

更新,证书可以在这里看到:

在此输入图像描述

更新:

它变得更加奇怪:

我在我的Web服务器上安装了Visual Studio,并使用以下代码通过Thumbprint获取证书:

var store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindByThumbprint, "71995159BFF803D25BFB691DEF7AF625D4EE6DFB", false);
Run Code Online (Sandbox Code Playgroud)

这实际上是RETURNS一个有效的结果.当我将此信息放入我的服务/客户端的web.config时,我仍然得到错误.

par*_*agy 13

我想..你在Trusted People的位置安装了证书,并在商店名称中搜索我的

var store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindBySubjectDistinguishedName, certificateSubject, false);
Run Code Online (Sandbox Code Playgroud)

也有两个搜索条件FindBySubjectName或者FindBySubjectDistinguishedName,后来是与关键字和第一个更具相关性会发现搜索关键词什么.

所以基本上你需要寻找主题,如果你使用上面的代码,那么你的搜索字符串将是.."CN = urs.microsoft.com,O = DO_NOT_TRUST,OU =由http://fiddler2.com创建"

证书属性

  • 使用专有名称搜索的特殊之处在于它**必须**逐字格式化,因为它是在 ASN.1 数据中编码的,例如,`"CN=Name, O=Company"` 是有效的,而 `"CN =Name,O=Company"` 和 `"CN = Name, O = Company"` 无效。我建议首先使用以下代码对其进行格式化:`new X500DistinguishedName("CN=Name,O=Company", X500DistinguishedNameFlags.None).Format(false)` 并将返回值传递给 Find 方法。 (3认同)