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.
Nice. Il peut être utile de souligner que le mode de sécurité doit être "Transport", et le transport clientCredentialType doit être "Certificate". – Anders