2010-12-14 81 views

回答

9

假设你正在使用双工信道,你可以从文件加载证书如下:

//Load certificate file with private key 
var certificate = new X509Certificate2("c:\certificate.pfx", "password"); 

//Configure your server by to use certificate, for example: 
var host = new ServiceHost(typeof(YourService), 
         new Uri("Your service's uri")); 
host.Credentials.ServiceCertificate.Certificate = certificate; 

//configure your server to accept client's certificate , accept all 
//certificate in this case, or you can assign it to the public key file 
host.Credentials.ClientCertificate.Authentication.CertificateValidationMode 
          = X509CertificateValidationMode.None; 

在您的客户端的代码,加载证书与上面相同

//configure your client to use certificate 
var channelFactory = new ChannelFactory<IYourService>(); 
channelFactory.Credentials.ClientCertificate.Certificate = 
              clientCertificate; 

//configure your client to accept server's certificate, 
//again, for simplicity, just accept any server's certificate 
channelFactory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode 
          = X509CertificateValidationMode.None; 

我觉得你应该没问题。请记住,如果从文件加载,则必须加载由pvk2pfx.exe生成的.pfx文件,它具有私钥和公钥。否则WCF会混淆到在哪里查找私钥。

+1

不错。值得指出的是,安全模式必须是“传输”,并且传输clientCredentialType必须是“证书”。 – Anders 2015-12-10 15:50:18

相关问题