我正在尝试使用以下代码以编程方式将证书添加到存储区:
var certPath = string.Format("{0}//{1}", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),"fileName.pfx");
var cert = new X509Certificate2(certPath, "Password");
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
我签入 MMC 并添加了证书。
如果我现在以管理员权限在命令提示符下运行:
netsh http add sslcert ipport=0.0.0.0:<port> certhash=<Thumbnail> appid={00000000-0000-0000-0000-000000000000}
然后,它会抛出 1312 错误"指定的登录会话不存在。它可能已经被终止了。
如果我通过 MMC 中的导入函数添加证书,那么上面的命令就可以了。
谁能帮忙?
问题是窗口存储私钥的方式。若要在 .Net 中以编程方式执行此操作,请更改以下代码行:
X509Certificate2 cert = new X509Certificate2(path, "password",
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
根据此问题:在根中插入证书(使用私钥),本地计算机证书存储在 .NET 4 中失败
我们最终使用 WIX 在安装时将证书注入存储。它似乎工作得很好。