2012-02-16 4 views
0

証明書で認証されたWCFサービスを使用しています。私はVSデバッグモードで動作しますが、公開して実行すると動作しません。証明書認証付きWCFサービスクライアント。デバッグ時に動作しますが、ライブではありません。

cerificatesdはCurrentUser/TrustedPeopleに格納されます。 これは私のconfig行動-セクションです:

<behavior name="LoadClientCert"> 
    <clientCredentials> 
     <clientCertificate findValue="CN=Certificate1" 
         storeLocation="CurrentUser" storeName="TrustedPeople" 
         x509FindType="FindBySubjectDistinguishedName" /> 
     <serviceCertificate> 
      <defaultCertificate findValue="CN=Certificate2" 
         storeLocation="CurrentUser" storeName="TrustedPeople" 
         x509FindType="FindBySubjectDistinguishedName" /> 
      <authentication certificateValidationMode="None" 
         revocationMode="NoCheck" /> 
     </serviceCertificate> 
     </clientCredentials> 
</behavior> 

エラーメッセージ:リクエストエラー サーバがリクエストの処理中にエラーが発生しました。詳細はサーバーログを参照してください。

私の推測では、IISユーザーには証明書を使用する権限がありません。しかし、それは推測だけです。

そして、そのサーバーログはどこにありますか?イベントビューアを試しましたが、何も見つかりませんでした。私は運がなければ私の設定にこれを追加しました。(ソリューションを試した後に空です):

<system.diagnostics> 
<sources> 
    <source name="System.ServiceModel.MessageLogging"> 
    <listeners> 
      <add name="messages" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      initializeData="f:\logs\messages.svclog" /> 
     </listeners> 
    </source> 
</sources> 
</system.diagnostics> 
<diagnostics> 
<messageLogging 
    logEntireMessage="true" 
    logMalformedMessages="false" 
    logMessagesAtServiceLevel="true" 
    logMessagesAtTransportLevel="false" 
    maxMessagesToLog="3000" 
    maxSizeOfMessageToLog="2000"/> 
</diagnostics> 

何か提案がありますか?

+0

あなたが自己署名証明書を使用していますか? – Rajesh

+0

はい自己署名しています – espvar

答えて

2

あなたは2はSSLつまりSSLとトランスポートチャネルを確保し、SSLを使用してクライアントを認証して使用している場合、次のように証明書を配置する必要があります。

サーバー証明書(.PFXファイル)の場合:

Local Machine Personalフォルダに証明書をインストールします。サーバー・マシン上で

(.cerファイル):クライアント証明書

は、ローカルマシンでのクライアント証明書をインストールします - > [信頼されたユーザーストアクライアントマシン(.PFXファイル)で

: インストールローカルユーザでクライアント証明書 - >個人ストア

また、サーバー証明書が自己署名したばかりのサービスメソッドを呼び出す前に、クライアント側で以下のコードを使用してくださいある場合:

System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) => 
                       { 
                        return true; 
                       }; 

UPDATE:

How to enable Tracing

+0

証明書の配置は重要ですか?それはどこに見えるのconfigで指定されている限り?サービスは通常のhttp:// – espvar

+0

を使用します。証明書は適切なストアに配置する必要があります。 – Rajesh

+0

しかし、私はsslを使わないとどこに置くのですか? – espvar

関連する問題