2010-12-14 12 views

Antwort

9

Angenommen, Sie Duplex-Kanal verwenden, können Sie Zertifikat aus einer Datei wie folgt laden:

//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; 

In Ihrer Kunden-Code, Last das Zertifikat wie oben

//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; 

Ich denke, Sie sollten von diesem Punkt aus in Ordnung sein. Denken Sie daran, dass Sie, wenn Sie von einer Datei laden, die .pfx-Datei laden müssen, die von pvk2pfx.exe erzeugt wird, sie hat sowohl einen privaten Schlüssel als auch einen öffentlichen Schlüssel. Andernfalls wird WCF verwirrt, wo nach dem privaten Schlüssel gesucht werden soll.

+1

Schön. Es könnte sich herausstellen, dass der Sicherheitsmodus "Transport" sein muss und der Transport clientCredentialType muss "Zertifikat" sein. – Anders

Verwandte Themen