我有一个C#表单(在客户端计算机上运行),它从商店收集所有用户X509Certificates,将它们呈现给用户,以便他们可以选择他们想要使用的那个。然后我将证书传递给webservice来做一些工作。 这一切都很棒! 问题是,从不提示用户输入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....
}
感谢您的帮助, 史蒂夫
答案 0 :(得分:0)
如果您选择使用来自eToken或SmartCard等加密设备的证书,系统会自动提示您输入密码(设备密码,而不是证书)。在其他情况下,我认为你不应该关心它。您可以在Windows中轻松访问本地商店而无需任何密码,那么为什么要在应用程序中传递保护它们。
答案 1 :(得分:0)
取决于证书的私钥是否受密码保护。如果您从商店访问此类证书,则窗口应提示您输入该文件。