mic*_*ver 1 .net c# x509certificate2 x509certificate x509
我有一个智能卡读卡器。当我尝试访问接受客户端证书的网站时,浏览器会向我提供包含 2 或 3 个客户端证书的列表。
所有这些证书选项都与我的机器上使用的卡密切相关。
当我尝试通过 .NET 中的 X509Store 类访问这些选项时,我得到了 256 个选项。对于用户来说太多了,无法分类!
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
Run Code Online (Sandbox Code Playgroud)
大多数用户不应选择以星号开头的证书,因此我可以轻松过滤掉 80% 左右的证书。例如:
*.amazonaws.com *.slashdotmedia.com *.msedge.net
我的问题是:如何将选项缩小到可管理的级别,例如我的浏览器(chrome),但来自 .NET ?
首先:以只读方式打开证书存储:
store.Open(OpenFlags.ReadOnly);
Run Code Online (Sandbox Code Playgroud)
接下来,您必须按以下条件进行过滤application policy = client authentication:
var certs = store.Certificates.Find(X509FindType.FindByApplicationPolicy, "1.3.6.1.5.5.7.3.2", true);
Run Code Online (Sandbox Code Playgroud)
certs变量将仅存储有效的证书(受信任的、不可撤销的、时间有效的等)并且适合客户端身份验证。
完成后,关闭商店:
store.Close();
Run Code Online (Sandbox Code Playgroud)