经过与WCF安全的残酷斗争后,我认为我现在处于最后阶段,可以看到光明。
我的服务器上安装了客户端证书,现在按照建议,在证书库的Trusted People文件夹中。
但是,当我尝试阅读证书申请时 - >服务,我收到这个错误:
使用以下搜索条件找不到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);
这实际上是RETURNS一个有效的结果。当我将此信息放入我的服务/客户端的web.config时,我仍然收到错误。
答案 0 :(得分:13)
我认为..您在信任的人位置安装了证书,并在商店名称我的
搜索var store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindBySubjectDistinguishedName, certificateSubject, false);
此外,还有两个搜索字词FindBySubjectName
或FindBySubjectDistinguishedName
,后者与关键字更相关,第一个搜索字词会找到搜索关键字。
所以基本上你需要寻找主题,如果你使用上面的代码那么你的搜索字符串就是..“CN = urs.microsoft.com,O = DO_NOT_TRUST,OU =由http://fiddler2.com创建”
答案 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];
}