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

Sar*_*ola 3 ssl binding netsh windows-8

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

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

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

netsh.exe http add sslcert ipport=0.0.0.0:{0} certhash={1} appid={2}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Tom*_*omB 5

您的问题是在绑定之前。我认为证书未正确导入。当您在 C# 中加载证书时,请使用:

var cert = new X509Certificate2("Path", "Pwd, X509KeyStorageFlags.MachineKeySet
                                              | X509KeyStorageFlags.PersistKeySet
                                              | X509KeyStorageFlags.Exportable);
Run Code Online (Sandbox Code Playgroud)

并确保将其存储在本地计算机中StoreLocation.LocalMachine

var store = new X509Store(storeName, StoreLocation.LocalMachine);
store.Open(OpenFlags.MaxAllowed);
store.Add(cert);
store.Close();
Run Code Online (Sandbox Code Playgroud)