2016-08-08 11 views
1

私はスマートカードリーダーを持っています。クライアント証明書を受け入れるウェブサイトにアクセスしようとすると、ブラウザは2つまたは3つのクライアント証明書のリストを私に提供します。ブラウザのようなクライアント証明書をフィルタリングする

これらの証明書オプションはすべて、自分のマシンから使用されたカードと密接に関連しています。

.NETのX509Storeクラスでこれらのオプションにアクセスしようとすると、256のオプションが返されます。それはユーザーが並べ替えるにはあまりにも多くです!

X509Store store = new X509Store("MY", StoreLocation.CurrentUser); 
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite); 

は、証明書のほとんどのユーザーはアスタリスクで始まる選ぶべきではありませんので、私は簡単に80%かそこらをフィルタリングすることができます。たとえば、次のように

* .amazonaws.com * .slashdotmedia.com * .msedge.net

私の質問は:私は私のブラウザのように管理可能なレベルにまで選択肢を絞り込むことができますか(クロム)が.NETからですか?

答えて

3

まず:読み取り専用として開いた証明書ストア:次

store.Open(OpenFlags.ReadOnly); 

、あなたがapplication policy = client authenticationによってフィルタリングする必要があります。

var certs = store.Certificates.Find(X509FindType.FindByApplicationPolicy, "1.3.6.1.5.5.7.3.2", true); 

certs変数は、唯一の有効な証明書(信頼され、非を保存します破棄され、時間有効など)、クライアント認証に適しています。

行われ、店を閉じる:

store.Close(); 
関連する問題