我正在尝试复制IIS Import所做的事情。我有一个需要以编程方式导入证书的应用程序,但它不工作,因为我似乎错过了一个步骤。如果我通过IIS import实用程序导入相同的证书,它可以完美地工作。
在代码中:
private X509Certificate2Collection x509 = new X509Certificate2Collection();
private X509Store IIS = new X509Store(StoreName.My, StoreLocation.LocalMachine);
x509.Import(path, password, X509KeyStorageFlags.Exportable);
var certificate = new X509Certificate2(path, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet);
IIS.Open(OpenFlags.ReadWrite);
IIS.Add(certificate);
IIS.Close();
netsh http add sslcert ipport=0.0.0.0:" + port.ToString() + " certhash=" + CertificateThumbprint + " appid={2d967d25-4edf-4962-9b6c-5b3c4d4de48d}";
netsh绑定失败,并显示错误a specified logon session does not exist. it may already have been terminated
如果我首先通过IIS管理器导入证书,然后运行netsh命令,这一切都很好,所以我的代码中一定遗漏了IIS在后台执行的某些操作。
发布于 2020-02-27 19:53:06
因为您没有按要求设置X509KeyStorageFlags.PersistKeySet
,所以证书实际上并没有像您希望的那样导入到存储中。
有关更多解释,请参阅KB950090
https://stackoverflow.com/questions/60439913
复制相似问题