Httplistener с поддержкой HTTPS

Кажется, существует много запутанной, а иногда и противоречивой информации о том, как сделать.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, pksprivate и т. д. )... Есть ли предпочтительный формат, который я должен использовать?

Как только я получу сертификат в доверенное хранилище, мне нужно привязать его к TCP-порту. У меня Windows 7 :, следует ли использовать httpcfgили netsh?

59
задан Peter Mortensen 23 April 2019 в 13:21
поделиться