从 ASP.NET 页面列出存储在用户计算机中的所有证书

本文关键字:计算机 用户 证书 存储 NET ASP | 更新日期: 2023-09-27 18:33:04

我真的不认为这是一件可行的事情,但我需要找到一种方法。我们的 ASP.NET 网站允许用户以报告或XML文档的形式查看/下载发票。

现在,问题是,这些XML发票应该使用XAdes(派生自XMLDsig)进行签名。为此,需要证书。证书不会存储在服务器计算机中,而是单独存储在每个用户的计算机中。因此,当用户单击下载按钮时,应询问他们要使用哪些证书来签署 XML 发票。

是否可以在 ASP.NET 页面中重新读取用户本地存储?我并不是说在当前用户下的服务器本地存储中获取证书。

据我所知,这是需要使用 ActiveX 控件完成的事情。

从 ASP.NET 页面列出存储在用户计算机中的所有证书

ASP.NET 应用程序无法直接从客户端的证书存储中读取,但它可以请求客户端提供合适的证书。行为因浏览器而异,但一般来说,如果找到多个匹配的客户端证书,浏览器将弹出一个对话框,询问用户选择要进行身份验证的证书。

在大多数情况下,您将配置应用程序以使用颁发者名称等属性查找客户端证书,该属性可由多个证书使用:

<clientCertificate x509FindType="FindByIssuerName" storeLocation="CurrentUser" storeName="My" findValue="MY-ISSUING-CA" />

我不确定上述配置需要多细化,因此您可能需要稍微弄乱它,但它应该有助于您朝着正确的方向前进。