以编程方式将证书添加到存储区后出现 Netsh 错误 1312

本文关键字:Netsh 1312 错误 存储区 方式 编程 证书 添加 | 更新日期: 2023-09-27 17:57:04

我正在尝试使用以下代码以编程方式将证书添加到存储区:

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 中的导入函数添加证书,那么上面的命令就可以了。

谁能帮忙?

以编程方式将证书添加到存储区后出现 Netsh 错误 1312

问题是窗口存储私钥的方式。若要在 .Net 中以编程方式执行此操作,请更改以下代码行:

X509Certificate2 cert = new X509Certificate2(path, "password",
    X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);

根据此问题:在根中插入证书(使用私钥),本地计算机证书存储在 .NET 4 中失败

我们最终使用 WIX 在安装时将证书注入存储。它似乎工作得很好。