我正在尝试将证书部署到 windows-my 商店中,以便在 IIS6.0 中将其用于 SSL。当应用程序运行时,我在 SSLDiag 输出中看不到任何错误,并且一切正常,但是一旦我关闭应用程序 SSLDiag 就会显示错误:
#WARNING: You have a private key that corresponds to this certificate
but CryptAcquireCertificatePrivateKey failed
我检查了机器密钥集,并注意到在我关闭应用程序后,它会使用已创建的密钥删除文件。这是我检查的位置:
C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
如何在机器密钥集中保留创建密钥文件?
这是我正在使用的代码:
using(var openFileDialog = new OpenFileDialog())
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
var password = "password";
var certificate = new X509Certificate2(openFileDialog.FileName, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
var keystore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
keystore.Open(OpenFlags.MaxAllowed);
keystore.Add(certificate);
keystore.Close();
}
}
我尝试了 X509KeyStorageFlags 的不同变体,但一旦我关闭应用程序,该文件仍会从机器键集中删除。为什么文件被删除,我该如何防止它?