过滤客户端证书,如浏览器

本文关键字:浏览器 证书 客户端 过滤 | 更新日期: 2023-09-27 18:01:34

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

过滤客户端证书,如浏览器

首先:将证书存储设置为只读:

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