2014-02-07 69 views
0

我发现了很多答案如何设置httplistener使用HTTPS,但每个解决方案都需要使用命令行。我想这是最快的方法,但我想编写C#类来处理这个问题。http侦听器与https编码在c#

在旧的解决方案我使用的Web服务器类(发现在互联网上的某个地方,我不记得确切的名字),它允许以这种方式添加证书:

webserver.Certificate = new X509Certificate2("MyCert.pfx", "MyPassword"); 

有没有办法用httplistener实现这一目标?从代码显然。

问候。

+0

什么命令行命令你想在C#中复制?看起来你应该首先让你的http侦听器工作,使用这种方式,你会知道*完全*你需要在C#代码中复制哪些设置命令。 –

+0

我的httplistener完美地工作,但我的雇主坚持加密连接。此解决方案(http://stackoverflow.com/questions/11403333/httplistener-with-https-support)包含我需要做的所有事情。 –

回答

5

可以加载的证书有:

X509Certificate cert = new X509Certificate2("MyCert.pfx"); 

然后再进行安装:

X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine); 
store.Open(OpenFlags.ReadWrite); 
if (!store.Certificates.Contains(cert)) 
{ 
    store.Add(cert); 
} 
store.Close(); 

当然,你可能需要更改商店名称或位置为特定的应用程序。

要运行netsh命令,您可以查看创建并运行进程(即Process.Start)并运行netsh.exe。否则,你必须弄乱Win32的HttpSetServiceConfiguration函数,或者.NET的等价物(如果有的话)。

您可能会发现这个codebox文章有用:http://dotnetcodebox.blogspot.com/2012/01/how-to-work-with-ssl-certificate.html

+0

我已经从博客上发布了代码[Nuget package](https://www.nuget.org/packages/SslCertBinding.Net/)。随意使用它。完整证书安装示例可以在[单元测试]中找到(https://github.com/segor/SslCertBinding.Net/blob/master/src/SslCertBinding.Net.Sample.Tests/UnitTests.cs) –