2012-01-30 7 views
2

異なる証明書を持つ2つの異なるHTTPS Webサイトに2つのWCFがホストされています。可能な無限ループを取り消すために、WCF(a)はWCF(b)を呼び出し、if節でWCF(b)を呼び出します。別のWCFを呼び出すWCF:SSL/TLSの信頼関係を確立できません

両方WCFのメソッドが呼び出されるたびに、それはエラーを返します:

Could not establish trust relationship for the SSL/TLS 

私は信頼されたルート証明書で証明書をインストールしようとしたが、それでもエラーが表示されます。残念ながら、WCF呼び出しを避けるための別のWCFはオプションではありません。

この問題を修正しましたか?

UPDATE:

私は同じウェブサイトの両方でのホスティング試みた、それはので、私はこれが使用されている証明書に固有のものです考えています働いていましたか?同じ証明書を使用する必要がありますか?異なる証明書を持つ異なるWebサイトを使用する方法がありますか?

+0

両方向に障害が発生しているか、たとえば、コールのみがbですか?証明書がDNS名と一致していますか?有効期限などの点で証明書は有効ですか?失効リストにアクセスできますか?現時点では両方とも自己署名証明書を使用しています。 –

+0

そう、WCFが使用されていても失敗します。私も投稿を更新しました。 – Bahamut

+0

サービスコンフィグを表示できますか?メッセージや転送セキュリティを使用していますか?どのバインディングを使用していますか? –

答えて

3

自己署名証明書を使用する場合は、WCFサービスにアクセスするクライアントで証明書検証がtrueを返す必要があります。以下に示すように

コードは次のとおりです。

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

あなたのサービスメソッドを呼び出す前に、ちょうどこのコードを配置します。

また、お互いを呼び出す2つのサービスAとBがあるため、上記のコードは電話をかけたときに両方の場所にある必要があります。上記は信頼できる証明書プロバイダから証明書を信頼するものではありません。

+0

私のためには機能しません。しかし、これに遭遇する可能性のあるSOユーザーの場合、このコードは開発とテストにのみ適用され、アプリケーションの実際のリリースには適用されません。 – Bahamut

+0

はい。自己署名証明書を使用しているので、上記のコードが適用されます。 – Rajesh

+1

証明書を使用してクライアント認証を使用していますか?実稼働環境でこのようなコードを*絶対に*送ってはいけません。中間者攻撃のためにあなた自身を開いていますが、それは簡単なことです。 – Nasko

1

あなたは次の点に注意する必要がSSLのための自己署名証明書を使用する:

  1. 証明書がローカルホスト\マイlocalhostおよび\ CA店の両方にインストールする必要があります。
  2. サブジェクトの共通名の部分は、サーバーの完全修飾ドメイン名と一致する必要があります。自己署名入りの証明書では、パブリックIPアドレスを使用できます。
  3. サービスが実行されるアカウントには、証明書の秘密キーに対する読み取りアクセス権が必要です。

これらの手順は、IISでサービスをホストし、IISを使用してサーバー証明書を生成することで実現できます。

また、wcfでは通常、証明書にCRLが添付されている必要があります。しかしこれはcertmgr.exeで生成することもできます。

関連する問題