向WCF客户端添加证书。找不到X.509证书

我有一个WCF客户端,该客户端将使用由该服务发布的证书针对某些Web服务进行身份验证。最初,我的客户使用https绑定,如下所示:

var httpsBinding = new BasicHttpsBinding();
httpsBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
httpsBinding.Security.Mode = BasicHttpsSecurityMode.Transport;

但这会导致以下错误:

  

InvalidOperationException:未提供客户端证书。   在ClientCredentials中指定客户端证书。

然后我将以下代码添加到我的客户端配置中:

this.ChannelFactory.Credentials.ClientCertificate.SetCertificate("test",system.security.Cryptography.X509Certificates.StoreLocation.LocalMachine,system.security.Cryptography.X509Certificates.StoreName.My); 

现在我得到了错误

  

System.InvalidOperationException:'找不到X.509证书   使用以下搜索条件:StoreName'My',StoreLocation   'LocalMachine',FindType'FindBySubjectDistinguishedName',FindValue   “测试”。

我绝对可以将证书放在“本地计算机”上的“个人”文件夹中,但是仍然找不到。我尝试将证书放在指纹中的各个文件夹中,并使用指纹进行重命名,但我的应用程序仍然找不到它。这里可能是什么问题?

maguanying412 回答:向WCF客户端添加证书。找不到X.509证书

我建议您使用X509FindType.FindByThumbprint设置证书。

ServiceReference1.ServiceClient client = new ServiceReference1.ServiceClient();
//client.ClientCredentials.ServiceCertificate.SetDefaultCertificate(StoreLocation.LocalMachine,StoreName.Root,X509FindType.FindByThumbprint,"cbc81f77ed01a9784a12483030ccd497f01be71c");
client.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine,StoreName.My,"9ee8be61d875bd6e1108c98b590386d0a489a9ca");

它对应于下面的值。
enter image description here
为了使WCF服务可以访问此本地证书,我们通常将Everyone帐户添加到证书私钥的管理组中。
此外,WCF服务使用证书对客户端进行身份验证,这通常要求我们在客户端上同时设置服务证书和客户端证书。
随时让我知道是否有什么可以帮助您的。

本文链接:https://www.f2er.com/3143820.html

大家都在问