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