无法向 netsh 注册 C# 生成的自签名 SSL 证书(错误 1312)



我已经通过c# (bouncycastle)创建了一个自签名SSL证书。它显示在本地计算机/个人存储中,看起来与微软已经存在的本地主机证书完全相同。如果我显示属性,它会显示:

SSL证书添加失败,错误:1312指定的登录会话失败不存在的。它可能已经被终止。

然而,如果我想通过netsh注册这个证书,我得到一个错误:

netsh.exe http add sslcert ipport=0.0.0.0:{0} certhash={1} appid={2}

app-id是在assemblyinfo.cs中指定的GUID。certhash是来自证书属性页的哈希值。

我在许多博客文章中发现了这种情况发生的几个原因:

  • 使用提升权限(我正在做这个)
  • 确保您的证书注册在"本地计算机",而不是"当前用户"-我有这个。
  • 确保证书有一个私钥(它有,正如它在属性对话框中显示的那样)。

您的问题出现在绑定之前。我认为证书没有正确导入。当你在c#中加载证书时,使用:

var cert = new X509Certificate2("Path", "Pwd, X509KeyStorageFlags.MachineKeySet
                                              | X509KeyStorageFlags.PersistKeySet
                                              | X509KeyStorageFlags.Exportable);

并确保将其存储在本地机器StoreLocation.LocalMachine:

var store = new X509Store(storeName, StoreLocation.LocalMachine);
store.Open(OpenFlags.MaxAllowed);
store.Add(cert);
store.Close();

我今天有一个类似的问题,这是我如何解决它。当我在mmc.exe中查看本地计算机上安装的证书时,我看到我的证书没有带密钥的图标。

我组合*。Cer和*。PVK文件到*。可以用:

pvk2pfx -pvk "private_key.pvk"  -spc "public.cert" -pfx "test.pfx"

然后导入*。PFX文件与mmc.exe.

那么下一个命令将执行,没有错误:

netsh http add sslcert...
netsh http delete sslcert...

您必须做的另一个检查是:您的证书是否位于"本地计算机"下的"个人"存储下?如果没有,则必须使用附加参数certstorename="<store>"

其中我以以下方式确定了作为<store>传递的值:

  1. 打开MMC并为本地计算机帐户添加证书管理单元。
  2. <store>是证书所在文件夹的名称,当您通过此快照查看证书时。

默认情况下,certstorename的值为"MY",表示"Personal"文件夹。因此,如果你的证书在个人文件夹中,那么你就不需要添加这个参数。

相关内容

  • 没有找到相关文章

最新更新