2010-12-14 9 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ファイルをロードする必要があります.pvk2pfx.exeは、秘密鍵と公開鍵の両方を持っています。さもなければ、WCFは秘密鍵を検索する場所に混乱します。

+1

ニース。セキュリティモードは「トランスポート」でなければならず、トランスポートのclientCredentialTypeは「証明書」でなければならないことを指摘する価値があります。 – Anders

0

以下のSO質問には、これを行う方法の詳細なコードサンプルがありますが、証明書がパスワードで保護されている場所では機能しない可能性があります。

Programmatic WCF Message Security with Certificates

関連する問題