【发布时间】:2014-06-23 12:57:35
【问题描述】:
我有一个 .NET 4.0 程序,它在端口 9000 上运行 localhost。 我想支持 SSL 并有一个要导入的 .pfx 证书。
因为程序在多台计算机上运行,程序本身负责 存储证书并注册其端口。
当程序导入和注册时,一切正常。 但是当我重新启动计算机时,https 连接不起作用......更多......
事件查看器给出以下错误:
尝试访问 SSL 服务器时发生致命错误 凭证私钥。从返回的错误代码 密码模块是 0x8009030D。内部错误状态为 10001。
和
对端点使用 SSL 配置时出错 0.0.0.0:9000。错误状态码包含在返回的数据中。
我找到了一些解决方案,说明您需要在导入时将证书标记为“可导出” 但我在代码中找不到如何做到这一点。
存储证书:
String path = String.Concat(IOHelper.AssemblyPath, @"\certificate.pfx");
X509Certificate2 cert = new X509Certificate2(path, "password");
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
if(!store.Certificates.Contains(cert))
{
store.Add(cert);
}
注册主机:
netsh http add sslcert ipport=0.0.0.0:9000 certhash=<cert hash> appid=<app id>
【问题讨论】:
标签: c# ssl localhost x509certificate netsh