1

我有一个 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....
}

谢谢你的帮助,史蒂夫

4

2 回答 2

1

这取决于证书的私钥是否受密码保护。如果您从商店访问此类证书,Windows 应该会提示您输入它。

于 2009-07-31T12:43:04.603 回答
0

如果您选择使用来自 eToken 或 SmartCard 等加密设备的证书,系统将自动提示您输入密码(设备密码,而不是证书)。在其他情况下,我认为您不应该关心它。您可以在 Windows 中轻松访问本地商店而无需任何密码,那么为什么要在应用程序中对它们进行通行保护。

于 2009-07-31T12:28:11.133 回答