使用“FindBySubjectName”找不到X.509证书

时间:2012-11-06 10:27:47

标签: wcf ssl certificate x509certificate wcf-security

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

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

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

  

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

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

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

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

enter image description here

更新:

更奇怪的是:

我在我的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);

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

2 个答案:

答案 0 :(得分:13)

我认为..您在信任的人位置安装了证书,并在商店名称我的

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

此外,还有两个搜索字词FindBySubjectNameFindBySubjectDistinguishedName,后者与关键字更相关,第一个搜索字词会找到搜索关键字。

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

Certificate properties

答案 1 :(得分: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];
        }