1

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

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 中的导入功能添加证书,则上述命令有效。

有人可以帮忙吗?

4

2 回答 2

3

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

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

根据这个问题:Inserting Certificate (with privatekey) in Root, LocalMachine certificate store failed in .NET 4

于 2016-04-26T00:06:12.240 回答
0

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

于 2013-03-08T11:59:39.643 回答