http-слушатель с поддержкой https, закодированный в С#

Я нашел много ответов, как настроить httplistener для использования HTTPS, но каждое решение требует использования командной строки. Я думаю, это самый быстрый способ сделать это, но я хотел бы написать класс С#, чтобы справиться с этим.

В старом решении я использовал класс веб-сервера (нашел где-то в Интернете, точное название не помню), который позволял добавить сертификат таким образом:

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

Есть ли способ добиться этого с помощью httplistener? Очевидно, из кода.

С уважением.


person Adam Mrozek    schedule 07.02.2014    source источник
comment
Какую команду командной строки вы пытаетесь продублировать в С#? Похоже, вы должны начать с того, чтобы заставить работать ваш http-прослушиватель, используя таким образом, чтобы вы точно знали, какие команды настройки вам нужно дублировать в коде C#.   -  person Jim Mischel    schedule 07.02.2014
comment
Мой httplistener работает отлично, но мой работодатель настаивает на зашифрованном соединении. Это решение ( stackoverflow.com/questions/11403333/ ) содержит все, что мне нужно сделать.   -  person Adam Mrozek    schedule 07.02.2014


Ответы (1)


Вы можете загрузить сертификат с помощью:

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. В противном случае вам придется возиться с HttpSetServiceConfiguration или эквивалент .NET, если он есть.

Эта статья о кодах может оказаться полезной: http://dotnetcodebox.blogspot.com/2012/01/how-to-work-with-ssl-certificate.html

person Jim Mischel    schedule 07.02.2014
comment
Я опубликовал код из блога в виде пакета Nuget. Не стесняйтесь использовать его. Пример полной установки сертификата можно найти в модульные тесты - person Serghei Gorodetki; 04.06.2015