1

クライアント認証が https シナリオでどのように機能するか、およびそれを使用して基本的な認証/承認機能を提供する方法を理解しようとしています。

証明書とユーザー (IPrincipal など) の間のマッピングが必要だとしましょう。私のサーバーは証明書を発行し、それらをクライアントに配布します。クライアントが接続するときに証明書を要求し、有効な証明書が提供されている場合は、以前に定義したマッピングに基づいてユーザーを認証します。

マッピングを作成するには何を使用すればよいですか? 証明書の拇印は良い候補ですか? クライアントの身元を特定するだけで十分ですか?

それとも、マッピングはまったく必要なく、サーバーによって発行されたすべての証明書を単に受け入れることができますか?

編集: 言い換えてみましょう - クライアント証明書を発行できると仮定すると、https セッション中にクライアントの身元を確認するにはどうすればよいですか?

4

3 に答える 3

1

質問の多くは、既存の証明書インフラストラクチャがどのように見えるかに大きく依存します。セキュリティ上の理由から、マッピングを介して特定のユーザーを特定することを強くお勧めします。ユーザー認証用の証明書を配布するところまで行った場合は、おそらくセキュリティで保護する価値のあるものがあります。必要な承認または監査は、ユーザーごとに行う必要があります。最良の方法は、証明書CN(一般名)を使用することです。拇印は特定の証明書として識別されますが、証明書の有効期限が切れるとどうなりますか?これはもちろん、証明書を発行するときにCNが管理され、特定の人物に関連することを意味します。確認メールを送信することで検証ルーチンを作成できるため、メールアドレスの使用は非常に信頼できることがわかりました。電子メールアドレスを使用して一意性を強制することもできます。

難しいのは、証明書を配布し、IISにクライアントに証明書を要求させて、asp.netアプリがその情報にアクセスできるようにすることです。すべてのリクエストにRequest.ClientCertificate、認証に必要な証明書のすべての詳細が含まれるものが含まれるようになったら。

于 2012-10-23T15:21:50.777 に答える
0

.NetFrameworkを使用していると想定しています。HttpRequest.ClientCertificateプロパティを使用してみてください。証明書の検証はASP.NETで既に行われているため、IsValidプロパティを確認する必要があります。残りの検証は、証明書をユーザーにマップすることです。

すべての証明書が同じCAによって発行されている場合は、証明書のシリアル番号を使用できます。シリアル番号とともにHttpClientCertificate.Issuerプロパティを含めない場合。

デバッグが必要な場合、後で指紋を使用するのは困難です。

于 2012-10-23T15:22:23.853 に答える
0

あなたの質問には2つの異なる部分が含まれています:

1) クライアント証明書が私によって発行され、良好な状態であることを確認するにはどうすればよいですか?

非常に一般的な答えは、信頼されたルート証明書に対してチェーンを検証することです。例として、ここで読むことができます:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd407310(v=vs.85).aspx http://www.openssl.org/docs/apps/verify.html http:/ /www.cryptosys.net/pki/x509_validatechain.html

ほとんどの場合、これを行うためにコードを記述する必要はありません。必要なのは、Web サーバーの前に (例として) Apache をインストールすることだけです。信頼できる証明書に対してクライアント証明書を要求および検証するように Apache を構成できます。

2) 証明書をユーザーにマップするにはどうすればよいですか?

一般的な方法を探している場合は、証明書の Subject Alternative Name プロパティを使用してプリンシパル名を保存する必要があります。これは、複数のプロバイダーで使用される最も一般的な方法です。

以下に、Windows 関連の興味深いリンクをいくつか示します。

http://technet.microsoft.com/en-us/library/cc736706(v=ws.10).aspx

http://technet.microsoft.com/en-us/library/cc736781(WS.10).aspx

ただし、一般的に言えば、証明書内の任意のものをマッピングに使用できます。

于 2012-10-23T15:26:58.267 に答える