2014-02-07 80 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) –