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

时间:2013-05-24 07:19:46

标签: ssl binding windows-8 netsh

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

  

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

但是,如果我想通过netsh注册此证书,我会收到错误:

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

app-id是assemblyinfo.cs中指定的GUID。 certhash是证书的properties-page中的哈希值。

我在很多博客文章中找到了几个原因:

  • 使用提升的权限(我这样做)
  • 确保您的证书在“本地计算机”中注册,而不是在“当前用户”中注册 - 我有这个。
  • 确保证书具有私钥(它具有,如属性dialoge框中所示)。

他们都没有取得成功......

3 个答案:

答案 0 :(得分:4)

您的问题在绑定之前。我假设证书未正确导入。 在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();

答案 1 :(得分:0)

我今天遇到了类似的问题,这就是我修复它的方法。当我在我的本地计算机/ mmc.exe中看到安装的证书时,我看到我的证书没有带钥匙的图标。

我将* .cer和* .pvk文件与* .pfx结合使用:

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

然后使用mmc.exe导入* .pfx文件。

然后执行下一个命令而没有错误:

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

答案 2 :(得分:-1)

您需要做的另一项检查是:您的证书是否位于“本地计算机”下的“个人”商店下?如果不是,您将不得不使用附加参数certstorename="<store>"

我通过以下方式确定要传递为<store>的值:

  1. 打开MMC并为“本地计算机”帐户添加“证书”管理单元。
  2. <store>是您通过此管理单元查看证书时所在文件夹的名称。
  3. 默认情况下,certstorename的值为“MY”,表示“Personal”文件夹。因此,如果证书位于个人文件夹中,则无需添加此参数。