0

WCF のセキュリティについて質問があります。特定の問題はありませんが、より一般的な質問があります。

WCF サービスを作成し、証明書を使用して保護する場合、そのサービスを使用するすべてのクライアントは、対応するクライアント証明書を持っている必要がありますか?

たとえば、(証明書を使用する) WCF サービスと通信する Winforms クライアント アプリケーションがある場合、クライアントはその一致するクライアント証明書を持っている必要がありますか? - または、クライアントは証明書をインストールせずに通信できますか?

ありがとう。

4

2 に答える 2

1

フロストさん、最初に証明書がどのように機能するかを簡単に説明します。これは重要です。

  1. ブラウザー (ここではブラウザーはクライアントであり、他のクライアントでもかまいません) は、安全なページ (通常は https://) を要求します。

  2. Web サーバーは、証明書とともに公開鍵を送信します。

  3. ブラウザーは、証明書が信頼されたパーティ (通常は信頼されたルート CA) によって発行されたこと、証明書がまだ有効であること、および証明書がアクセスしたサイトに関連していることを確認します。
  4. 次に、ブラウザは公開鍵を使用して、ランダムな対称暗号化鍵を暗号化し、必要な暗号化された URL と他の暗号化された http データとともにサーバーに送信します。
  5. Web サーバーは、その秘密鍵を使用して対称暗号化鍵を復号化し、対称鍵を使用して URL と http データを復号化します。
  6. Web サーバーは、要求された html ドキュメントと http データを対称キーで暗号化して送り返します。
  7. ブラウザは、対称キーを使用して http データと html ドキュメントを復号化し、情報を表示します。

クライアント証明書とサーバー証明書の違いは何ですか。これについては、リンクを参照してください

「クライアントはその一致するクライアント証明書を持っている必要がありますか」という質問に答えると、そうです、それなしでは概念は機能しません。

于 2013-06-25T11:39:45.967 に答える
1

サーバー証明書とクライアント証明書を混同している可能性があります。サービスが「証明書によって保護されている」と言うとき、どちらを意味するのかは明確ではありません。サーバー証明書とクライアント証明書はどちらもサービスを「保護」できますが、方法は異なります。サーバー証明書は通信を暗号化し、クライアント証明書はサービスを許可されたクライアントのみに制限します。

サーバー証明書のみを使用するセットアップは、HTTPS 経由で提供される Web サイトと似ています。サーバーのみに証明書が「インストール」されています (証明書の秘密鍵があることを意味します)。クライアントは独自の証明書を持っていませんが、サーバーは独自の証明書をクライアントに送信し、証明書に署名した機関を信頼していると仮定して、サーバーの身元を確認できます。さらに、サーバー ID が確立されると、証明書はクライアントとサーバー間のセッションを暗号化するための基礎を提供します。

これまでのところ、クライアント認証はありませんでした。クライアントは、(サーバー証明書のおかげで) 意図したサーバーと通信していることを認識しており、すべての通信は暗号化されていますが、サーバーが ID を検証する方法はありません。それに接続するクライアント。クライアント証明書は、クライアント認証を実行する1 つの方法です。より一般的な代替手段は、ユーザー名とパスワードです。

クライアント証明書を使用するには、各クライアントが有効な証明書と秘密鍵を持っている必要があります。これはサーバーの証明書とは異なります。繰り返しになりますが、サーバーは必ずしもこれらの証明書のローカル コピーを保存しているわけではありません。証明書はセキュリティ ハンドシェイク中に交換されます。

このコンテキストでの「有効な」とは、確立された基準 (たとえば、クライアント証明書のホワイトリスト、またはクライアント証明書が特定の機関によって発行されることを要求する) を使用して、サーバーへの ID の手段として受け入れられることを意味します。サーバー証明書を有効なものとして受け入れるために、信頼されたルートまでの一連の認証局をクライアントが単に信頼することは、多くの場合許容されますが、認証に役立つように、許容されるクライアント証明書に追加の制限を課す必要があります。ほとんどの場合、信頼できる証明書を持つ任意のクライアントが、クライアント証明書を使用してクライアントを認証するように構成されたサービスに接続できるようにするのに役立ちます

于 2013-06-25T10:48:02.280 に答える