2017-08-18 1 views
0

スマートカード認証を受け入れるASP.Net Webアプリケーションを開発しようとしています。私はWebアプリケーションを作成し、IISに展開しました。ルート証明書は、CAによって承認されたIISマシンの信頼されたルートディレクトリにインストールされます。そのWebアプリケーションでは、Server certificateを追加し、Require SSLを設定して証明書を受け入れるように設定しました。 クライアントがこのWebアプリケーションにアクセスするとクライアント証明書を要求し、chromeがクライアント証明書を要求し、スマートカードがクライアントのマシンに挿入され、PINが要求されると、ユーザーは有効なPINを入力し、ウェブアプリ。これまでのところすべてが期待どおりに機能しますが、この時点でクライアント証明書を読み込み、証明書チェーンを使用してそのクライアントを検証する必要があります。また、クライアント証明書に基づいて、そのユーザーのロールを取得する必要があります。クライアント証明書を読み込もうとするたびに、証明書を取得できません。以下は、スマートカード証明書を読み込むためのコードです:クライアントサーバーアーキテクチャでスマートカード認証を使用できますか?

store.Certificates.Countは0

として来ている。ここ

`

X509Store store = null; 
store = new X509Store(StoreName.Root); 
store.Open(OpenFlags.ReadOnly); 
var certsAuthEnc = store.Certificates.Find(X509FindType.FindByKeyUsage, (int)CertificateType.DigitalSignature, false); 

`

、私はクライアント側で証明書を読むことができるか、助けてください?

答えて

0

私は、クライアント証明書を得たが、秘密鍵なしで以下のように: var x509 = new X509Certificate2(this.Request.ClientCertificate.Certificate);

この証明書は、チェーンで検証することができます。

0

サンプルでは、​​現在のユーザー "ルート"ストアを開いていますが、なぜあなたの説明が与えられたのかはわかりません。このストアには、管理者と現在のユーザーによって構成された信頼できるルートの一覧のみが含まれます。

現在のユーザーの証明書は、探している場合は「マイ」ストアに格納されます。

何らかの理由で現在のユーザー証明書をASP.NETアプリケーションのコンテキストで検証する場合は、X509Chain(https://www.google.com/search?q=X509Chain&oq=X509Chain&aqs=chrome..69i57.318j0j7&sourceid=chrome&ie=UTF-8)を使用し、X509Storeは使用しないことをお勧めします。

この投稿は、おそらくも参考になります:https://msdn.microsoft.com/en-us/library/ms148581(v=vs.110).aspx

ライアン

+0

あなたの助けてくれてありがとう、なぜ私はルートの場所に言及しています、私のログインウィンドウはサーバー側で、私のIISサーバー上で、証明書はルートの場所にインストールされています。 基本的には、私のASP .NET Webアプリで、PINが検証されると、そのユーザーが現在のタイムスタンプなどで有効であるかどうかのような次のステップを確認するためにそのデジタル署名データを取得する必要があります。 ユーザーがPINを入力したときにデジタル署名されたデータ? –

+0

ルートストアは自己署名されたルート証明書のリストです。 "ローカルマシン"のスコープは "ルートストア"ではないと考えています。しかし、私が述べたように、クライアントが提示したチェーンを検証したいトラストアンカーのリストを見たくないのです。 – rmhrisk

関連する問題