2011-01-13 20 views
15

私たちのシステムでデータを更新するためにお客様が使用できるWCFサービスを作成する準備ができています。したがって、インターネット上で利用可能でなければなりません。私はMessage Securityがインターネット経由でWCFサービスを利用できるようにする方法を知っているWCFに関する本を持っています。これは、サービスとクライアントの間にポイントツーポイント接続があることを保証できる環境でのみ使用する必要があるため、トランスポートセキュリティを使用しないでください。私はそれを得ましたか? したがって、カスタムのUserName認証と組み合わせてMessage Securityを使用したいと考えています。私はそれを達成するために証明書を取得しなければならないことを理解します。当社はすでに当社ウェブサイトに使用されているSSL証明書を所有しています。WCFサービス - UserName認証による証明書とメッセージセキュリティ

  • WCFサービスのメッセージセキュリティに同じ証明書を使用できますか?

そして

  • ASMX Webサービスを期待してクライアントとの相互運用可能メッセージセキュリティの方法は何ですか?

私は自分の証明書をMakecertで作成しました。それは正常に働いたが、私はいつもクライアントマシンのTrusted Personsに証明書を追加しなければならなかった。

  • それは手動でTrusted Personsに証明書を追加するクライアントを強制することなく、上記の証明書を使用してMessage Securityを有効にすることは可能ですか?

それでは、次のシナリオを想定してみましょう:

Company Infrastructure

ISA-サーバ/ファイアウォールの背後にある2つのウェブサーバがあります。このISAサーバには、www.company.comアドレスの証明書が格納されています。だから、すべてのSSLのものはそれによって処理されます。また、それに応じてWebサーバーに着信要求を転送します。新しく作成されたWCFサービスは、2番目のWebサーバー上で実行する必要があります。

  • は、私がMessage Securityを使用できるようにWebサーバに証明書をコピーする必要がありますか?

もしそうなら、コピーの証明書は安全性のレベルを低下させるため、適切ではないと聞きました。証明書をWebサーバーに移動することは、Web-Server1上のWebサイトにも必要であるため、オプションではありません。

  • この場合、どのような選択肢がありますか?

そして:

  • は何に関係なく、与えられた要件を、このシナリオのためのベストプラクティスでしょうか?

...

+0

Message SecurityをUserName認証で使用したいというご質問では、Message Securityの証明書のコピーが必要な理由がわかりません。私は何が欠けているのですか? – VoodooChild

+1

MessageSecurityを使用すると、メッセージに署名や暗号化を行うことができます。したがって、証明書の秘密鍵が必要で、他の部分には公開鍵が必要です。 WCFサービスをホストするサーバーにプライベートキーがない場合、メッセージの署名または暗号化をどのように行う必要がありますか?または、その問題に関するメッセージを復号化する。メッセージセキュリティには、セキュリティコンテキストのみが含まれているため、トランスポートの機能に頼る必要はありません。 http://msdn.microsoft.com/en-us/library/ms733137.aspxを参照してください –

答えて

12

素敵準備質問をいただき、ありがとうございます。まず第一に私はおそらく同じ本を読んで、私はこの文明確にしたいと思います:

あなたが 保証することができる場所、それが のみの環境で使用する必要がありますので、あなたが トランスポートセキュリティを使用してはならないためであります サービスとクライアントの間に ポイントツーポイント接続があることを確認します。

はい。 HTTPS(トランスポートセキュリティ)はポイントツーポイントセキュリティのみを提供しますが、IMOの人々はこのシナリオを正しく理解しません。あなたは、HTTPS経由でインターネットバンキングに接続すると、HTTPSからHTTPへのインターネットスワップ通信の途中でランダムにどこかにいると思いますか?いいえ!ポイントツーポイント接続とは、要求されたURLを提供するクライアントとアクセスされたゲートウェイとの間の安全なトランスポートチャネルを意味します。シナリオでは、クライアントとISA Server間の保護されたトランスポートチャネルを意味します。 ISAとWeb Server 2間の通信は保護されません。クライアントとWeb Server 2間の安全なチャネルを提供するエンドツーエンド(ISAはメッセージを傍受できません)が必要な場合は、メッセージセキュリティが必要です。あなたの他の質問に今

私はWCFサービスの メッセージセキュリティのために同じ証明書を使用することはできますか?

することができますはい、しかし、あなたがあなたのWebサーバ2

に秘密鍵をコピーする必要がは ASMX Webサービスを期待クライアントとの相互運用可能メッセージセキュリティの方法 ですか?

いいえ純粋なASMXクライアントでは、カスタムSOAPヘッダーと拡張機能の多くをコーディングするか、WSE 3.0をインストールしない限り、メッセージセキュリティーを使用できません。

は、上記と セキュリティを手動で信頼 者に証明書を追加するには、クライアント を強制することなく 証明書を述べたメッセージを有効にすることが可能ですか?

はい、公開された証明書をクライアントマシンで信頼する必要があります。 HTTPSと同じです。メッセージセキュリティで保護されたサービスは、WSDL内で証明書の拇印を公開することもできます。クライアントはこのサムプリントでサービスIDを検証できます。このような場合、クライアントに証明書をインストールする必要はありませんが、証明書が期限切れになると、すべてのクライアントを更新する必要があります。

私は メッセージセキュリティを使用できるようにWebサーバを する証明書をコピーする必要がありますか?

はい、必須です。しかし、これは問題になる可能性があります。なぜなら、セキュリティ理由の証明書をエクスポートできないとマークすることができるからです。最良の解決策は、この目的のためだけに新しい証明書を要求することです。

+0

あなたの答えをありがとう。 :-)あなたの提案は何ですか?トランスポートセキュリティに切り替えますか?はいの場合は、ISAが輸送セキュリティの取り扱いを担当していることをどのようにしてサービスに伝えますか?トランスポートセキュリティモードを設定すると、このサービスは 'web-server2'に存在する証明書も必要とするのではないでしょうか? userNamePasswordValidationMode = "Custom"を使用することはできますか?これはメッセージのセキュリティ設定でのみ可能ですか?非常に多くの質問...;) –

+0

はい、これらのすべての要件が可能です。これは、輸送されたデータの要件と機密性に基づいた選択です。 –

+0

ポイントツーポイントセキュリティとは何かを誤解していることを明確に説明しています。私は、PHPで消費されるWCFを開発する最良の方法を理解するために読んでいて、HTTPS経由の 'basicHTTPBinding'が安全でないことを恐れていました。 – PedroC88

関連する問題