NETSH - как привязать SSL-сертификат к порту и передать трафик приложению?

На Windows Server 2016

У меня есть простой веб-сервер Python (в колбе). Он отлично работает и прослушивает порт 80 (или что-то еще, что я настраиваю для прослушивания).

Мне нужно обслужить это по SSL.

У меня есть хороший сертификат, и я импортировал его в магазин Computer/personal cert.

Затем я побежал:

netsh http add sslcert ipport=0.0.0.0:443 certhash=8caef2be185a0c94d################ appid="{7E46BD40-39C6-4813-B414-019AD3332421}"   

netsh http add urlacl url=https://+:443/ user=Everyone

Команды работают нормально. Я запускаю флеш-сервер на 443, но он работает в незашифрованном виде. Например

https://host/    // fails, because the server is serving plain text
http://host:443   // works, because the traffic ain't ssl-ified

Как решить?

Чтобы было понятно: как решить, не касаясь кода фляги (мы не хотим помещать SSL-сертификат в файловую систему, которая не является безопасной). Я считаю, что netsh может использоваться для завершения SSL перед произвольным веб-сервером?

2 ответа

Решение

Ответ: Забудьте netsh, кажется, не билет.

Мы решили использовать IIS в качестве обратного прокси, как показано здесь:

https://developers.coveo.com/display/public/SearchREST/Configuring+HTTPS+Reverse+Proxy+in+IIS

и здесь

https://weblogs.asp.net/owscott/creating-a-reverse-proxy-with-url-rewrite-for-iis

Я не очень знаком с Flask. Но любое другое приложение на Python, которое я запускал в Windows и которое использовало SSL, напрямую ссылалось на форматированный сертификат PEM и файл ключа. Они вообще не взаимодействовали с хранилищем сертификатов Windows или нуждаются в каком-либо netsh конфигурации. Я предполагаю, что то же самое относится и к Flask, и есть особый способ ссылаться на эти файлы, чтобы он обслуживал трафик через HTTPS.

Быстрый веб-поиск "python flask ssl", кажется, дает некоторые обнадеживающие результаты:

Консенсус, кажется, вращается вокруг создания экземпляра SSL.Context который ссылается на сертификат и ключ и передает его в качестве аргумента app.run,

Другие вопросы по тегам