过滤浏览器

时间:2016-08-08 19:27:43

标签: c# .net x509certificate x509 x509certificate2

我有一个智能卡读卡器。当我尝试访问接受客户端证书的网站时,浏览器会向我提供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

我的问题是:我如何将选项缩小到可管理的级别,例如我的浏览器(chrome),但是从.NET?

1 个答案:

答案 0 :(得分:4)

首先:以只读方式打开证书存储区:

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();