2016-08-08 53 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();