我有一个 C# 表单(在客户端计算机上运行),它从商店收集所有用户 X509Certificates,将它们呈现给用户,以便他们可以选择他们想要使用的那个。然后我将证书传递给网络服务来做一些工作。这一切都很好!问题是,永远不会提示用户输入 X509Certificate 密码?一旦我从商店获得 X509Certificate,我就找不到“检查密码”的方法。我也想过使用 X509Certificate 构造函数,它需要路径和密码,但是我没有看到从我从商店中抓取的 X509Certificate 中获取文件路径和名称的方法?只从商店获取证书而不询问用户密码是否安全?
这就是我从商店抓取的方式:
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
for (int i = 0; i < store.Certificates.Count; i++)
{
X509Certificate c = store.Certificates[i];
...//add to GUI for user to pick here....
}
谢谢你的帮助,史蒂夫