16

在与 WCF Security 进行了一场残酷的斗争之后,我想我现在已经到了最后阶段,可以看到曙光了。

我的服务器上安装了一个客户端证书,现在按照建议位于证书存储的 Trusted People 文件夹中。

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

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

“姓氏”是我证书的“颁发给”部分。在我看过的所有教程中,这只是一个词;这是问题吗?我从我的 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);

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

4

2 回答 2

16

我认为..您在Trusted People位置安装了证书并在商店名称my处搜索

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

还有两个搜索词FindBySubjectNameor FindBySubjectDistinguishedName,后者与关键字更相关,第一个搜索关键字会找到任何内容。

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

证书属性

于 2012-11-06T10:53:30.130 回答
1

https://i.stack.imgur.com/QtYvV.png

private X509Certificate2 GetCertificateFromStore()
        {
            var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
            store.Open(OpenFlags.ReadOnly);
            var certCollection = store.Certificates;
            var currentCerts = certCollection.Find(X509FindType.FindBySubjectDistinguishedName, "CN=sf.sandbox.mapshc.com", false);
                return currentCerts.Count == 0 ? null : currentCerts[0];
        }
于 2018-04-21T18:05:41.937 回答