5

MSDN で提供されているドキュメントと、このサイトの他の投稿を読みました。ただし、証明書付きのメッセージ セキュリティを使用する場合に、WCF (具体的には NetTcpBinding) が実際にメッセージコンテンツを暗号化するかどうかはまだ少し不明です。誰かが確かに知っていますか?

たとえば、構成でトランスポートとメッセージの両方の資格情報を指定できます。

       <security mode="TransportWithMessageCredential">
          <transport clientCredentialType="Certificate"/>
          <message clientCredentialType="Certificate"
                   negotiateServiceCredential="true" />
       </security>

私が知る限り、MSDN のドキュメントでは、メッセージ セキュリティは単にユーザー名/パスワードまたは証明書ベースの認証 (ネゴシエーション) に依存していることを暗示していますが、メッセージ自体が実際にメッセージ レベルで暗号化されているとは特に述べていません。

たとえば、証明書ベースのネゴシエーションでメッセージ セキュリティのみを使用している場合、メッセージの内容が実際に暗号化されているとは思えません (つまり、サービスが認証を強制している場合でも、パケット スニファが生のメッセージの内容を傍受できる可能性があります)。

真のメッセージレベルの暗号化が (NetTcpBinding を使用して) 可能である場合、コードでどのように行われますか? これはAlgorithmSuiteに関連していると思いますが、よくわかりませんが、

binding.Security.Mode = SecurityMode.Message;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
binding.Security.Message.AlgorithmSuite = new System.ServiceModel.Security.TripleDesSecurityAlgorithmSuite(); 
4

3 に答える 3

6

これがあなたの質問に完全に答えるかどうかはわかりませんが、この記事によると、 TCP はデフォルトで暗号化されます。

NetTcpBinding はデフォルトで安全です。具体的には、発信者は認証のために Windows 資格情報を提供する必要があり、すべてのメッセージ パケットは TCP プロトコルで署名および暗号化されます。

つまり、構成をカスタマイズしても「なし」以外のセキュリティ モードを使用すると、

既定では、すべてのセキュリティで保護された WCF バインディングは、メッセージを暗号化して署名します。トランスポート セキュリティではこれを無効にすることはできませんが、メッセージ セキュリティでは、デバッグの目的で、または IPSec などの代替保護方法が使用されている場合に、これを無効にすることができます。

于 2012-07-10T22:50:12.603 に答える
5

WCF は、netTcpBinding を使用してメッセージ コンテンツを暗号化できます。これを確認する最も簡単な方法は、.config ファイルに診断を追加し、svclog ファイルを出力することです。svctraceviewer.exe ツールを使用すると、暗号化されたメッセージを実際に確認できます。

ここにいくつかの詳細情報があります (既に読んでいるかもしれません) WCF NetTcpBinding Security - how does it work?

于 2012-07-10T22:47:29.223 に答える