0

WCF を使用して wsHttpBinding でユーザー名の認証を使用する場合、クライアントは証明書をインストールする必要がありますか?それともホストでのみ必要ですか? いずれにせよ、この証明書は第三者によって署名される必要がありますか、それとも自己署名証明書でも機能しますか?

私の理解では、自己署名証明書を使用して設定できるということです

<authentication certificateValidationMode="None" /> 

サーバー側で。これは正しいです?

後もう一つ。自己署名証明書を使用する場合、特定のストアに証明書を配置する必要がありますか?それともすべて同じですか? - 自問自答: コードで適切なストアが設定されている限り、ストアは重要ではありません。

4

1 に答える 1

1

WCF は、トランスポート モード セキュリティなしではユーザー名認証を許可しません。つまり、証明書が必要です。

私の知る限り、適切な証明書を取得するには2つの方法があります。

  1. 信頼できる認証局から購入してください。
  2. 自分で認証局になり、証明書を作成します。会話の両側を制御しない限り、これはあまり役に立ちません。独自の証明書を作成する場合は、MakeCertPvk2PfxまたはOpenSSLを使用して、連鎖暗号化証明書を作成できます。OpenSSL を使用するこのハウツー記事をご覧ください。最後になりましたが、秘密鍵は安全な場所に保管する必要があることに注意してください。

これで、次のファイルが作成されます (名前は説明用です)。

  • server.cer (サーバーの公開鍵)
  • server.pfx (サーバーの鍵交換ファイル)
  • client.cer (クライアントの公開鍵)
  • client.pfx (クライアントの鍵交換ファイル)

次に、次のことができます。

  • サーバーのローカル コンピューターの証明書ストアで、次の手順を実行します。

    1. server.pfx を Personal フォルダーにインポートします。これにより、サーバーは秘密鍵でメッセージを暗号化し、公開鍵で暗号化されたメッセージを復号化できます。
    2. client.cer を Trusted People フォルダーにインポートします。これにより、サーバーはクライアントの公開鍵でメッセージを暗号化し、クライアントの秘密鍵で暗号化されたメッセージを復号化できます。
  • クライアントのローカル コンピューターの証明書ストアで、次の手順を実行します。

    1. client.pfx を Personal フォルダーにインポートします。これにより、クライアントは秘密鍵でメッセージを暗号化し、公開鍵で暗号化されたメッセージを復号化できます。
    2. server.cer を Trusted People フォルダーにインポートします。これにより、クライアントはサーバーの公開鍵でメッセージを暗号化し、サーバーの秘密鍵で暗号化されたメッセージを復号化できます。

最後に、クライアントとサービスセットの両方の構成ファイルで:

<authentication certificateValidationMode="ChainTrust"/> 

これにより、信頼されたルート ストア内の認証局に連鎖できる証明書のみが有効になります。

于 2012-12-08T01:00:22.617 に答える