Кажется, есть много запутанной, иногда противоречивой информации, касающейся возможности .NET HTTPListener HTTPS. Мое понимание таково:
Для одного кода С# требуется префикс
https(например,https://*:8443), чтобы слушатель мог понять, что ему нужно обслуживать запросы SSL на этом порту.Фактическое рукопожатие SSL происходит под прикрытием и обрабатывается
http.sys(похоронен где-то на машине Windows). Код С# не должен явно управлять рукопожатием SSL, потому что это происходит под прикрытием.Нужно иметь "доверенный сертификат X.509" на машине
httpListener, и каким-то образом этот сертификат должен быть привязан к порту 8443 (в этом примере).
Правильно ли мое понимание выше? Если нет, пожалуйста, просветите меня.
Что касается сертификатов X.509, я понимаю следующее:
- Используйте 
makecertдля создания сертификата X.509. Этот сертификат хранится в личном хранилище и должен быть перемещен в доверенное хранилище (именно здесь будет искать HTTP-слушатель). Кажется, я могу использоватьcertMgr, чтобы выполнить движение, или я могу использоватьmmc, чтобы произвести движение. Кажется, существует более одного формата сертификата X.509 (DER,Base64,pks, защищенный pswd,pksзакрытый и т.д.)... Есть ли предпочтительный формат, который я должен использовать? 
Как только я получу сертификат в доверенное хранилище, мне нужно привязать его к порту TCP. Я нахожусь на Windows 7: я должен использовать httpcfg или netsh?