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