2010-12-14 47 views

Répondre

9

Supposons que vous utilisez le canal duplex, vous pouvez charger le certificat de fichier comme suit:

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

Dans le code de votre client, charge le certificat comme ci-dessus

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

Je pense que vous devriez aller bien à partir de ce point. N'oubliez pas que si vous chargez à partir d'un fichier, vous devez charger le fichier .pfx qui est généré par pvk2pfx.exe, il a à la fois une clé privée et une clé publique. Sinon, WCF sera confus à l'endroit où rechercher la clé privée.

+1

Nice. Il peut être utile de souligner que le mode de sécurité doit être "Transport", et le transport clientCredentialType doit être "Certificate". – Anders