0

下面是我在服务器 web.config 文件中的配置设置,它是 WCF 应用程序。这里我使用 makecert.exe 创建 X509 证书。

<serviceCredentials> <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType= "WcfService1.CCustomValidatorClass,WcfService1"/> <serviceCertificate findValue="CN=SignedByCA1" x509FindType="FindBySubjectDistinguishedName" storeLocation="CurrentUser" storeName="My" /> </serviceCredentials>

“CN=SignedByCA1”是私钥,现在,我想从客户端调用 WCF 服务上的 Web 方法。但是我需要从客户端设置 SetDefaultCertificate,请您帮助我如何获取访问私钥 X509 证书的密钥。

ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client();

        obj.ClientCredentials.UserName.UserName = "Sukesh";
        obj.ClientCredentials.UserName.Password = "Sukesh";

        obj.ClientCredentials.ServiceCertificate.SetDefaultCertificate(
             System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, 
             System.Security.Cryptography.X509Certificates.StoreName.My,
             System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectDistinguishedName,
             "XYZ");

    string str = obj.GetData(1); // web method

请在这里帮我...

错误:{“X.509 证书 CN=SignedByCA1 链构建失败。使用的证书具有无法验证的信任链。更换证书或更改 certificateValidationMode。吊销功能无法检查证书的吊销。 \r\n"}

谢谢,苏克什。

4

1 回答 1

0

由于自签名证书,您收到错误消息。

您可以使用http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.servercertificatevalidationcallback(v=vs.100).aspx忽略错误

或者您可以将客户端证书安装到服务器的受信任的根权限中(假设这仅用于开发)。

或者,当然,您可以签署证书。

于 2012-06-15T00:15:40.770 回答