IIS在哪里导入证书?
Where does IIS import cert to?
我正在尝试复制 IIS Import 的功能。我有一个应用程序需要以编程方式导入证书,但它不起作用,因为我似乎缺少一个步骤。如果我通过 IIS 导入实用程序导入相同的证书,它会完美运行。
在代码中:
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 在后台执行的某些操作..
因为您没有按要求设置X509KeyStorageFlags.PersistKeySet
,证书实际上并没有按照您的意愿导入到商店。
进一步的解释可以在KB950090
中找到
我正在尝试复制 IIS Import 的功能。我有一个应用程序需要以编程方式导入证书,但它不起作用,因为我似乎缺少一个步骤。如果我通过 IIS 导入实用程序导入相同的证书,它会完美运行。
在代码中:
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 在后台执行的某些操作..
因为您没有按要求设置X509KeyStorageFlags.PersistKeySet
,证书实际上并没有按照您的意愿导入到商店。
进一步的解释可以在KB950090
中找到