X509Store 的工作方式不同于 MMC+Certificate/Import。那里出了什么问题?
X509Store works different than just MMC+Certificate/Import. What is wrong there?
我对 X509Store 有一个奇怪的问题。我有一个小工具,可以以非常经典的方式从商店中添加/删除东西:
var pfxContainer = File.ReadAllBytes(strPFXFileName);
X509Certificate2 x509Cert = new X509Certificate2(pfxContainer);
X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
try
{
store.Open(OpenFlags.ReadWrite);
store.Add(x509Cert);
store.Close();
}
一切都将在具有管理员权限的控制台上完成。一切似乎都很好——没有错误,没有异常。证书在那里。现在,如果我尝试从 IIS/Binding 中选择此证书,我会收到奇怪的消息:enter image description here
“指定的登录会话不存在。它可能已经被终止了……”
但是证书没问题 - 如果我使用 MMC 导入相同的证书 – 完全没有问题,我可以从 IIS 中选择和使用它。是否存在 certutil.exe 和错误 87 之类的错误,或者我遗漏了什么?
为了使用 IIS,证书必须是可导出的并且包含私钥。
为此,您必须指定 Exportable 和 PersistKeySet 标志:
X509Certificate2 cert = new X509Certificate2(PfxFile, Password,
X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
我对 X509Store 有一个奇怪的问题。我有一个小工具,可以以非常经典的方式从商店中添加/删除东西:
var pfxContainer = File.ReadAllBytes(strPFXFileName);
X509Certificate2 x509Cert = new X509Certificate2(pfxContainer);
X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
try
{
store.Open(OpenFlags.ReadWrite);
store.Add(x509Cert);
store.Close();
}
一切都将在具有管理员权限的控制台上完成。一切似乎都很好——没有错误,没有异常。证书在那里。现在,如果我尝试从 IIS/Binding 中选择此证书,我会收到奇怪的消息:enter image description here “指定的登录会话不存在。它可能已经被终止了……”
但是证书没问题 - 如果我使用 MMC 导入相同的证书 – 完全没有问题,我可以从 IIS 中选择和使用它。是否存在 certutil.exe 和错误 87 之类的错误,或者我遗漏了什么?
为了使用 IIS,证书必须是可导出的并且包含私钥。
为此,您必须指定 Exportable 和 PersistKeySet 标志:
X509Certificate2 cert = new X509Certificate2(PfxFile, Password,
X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);