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

На Windows Server 2016

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

Мне нужно обслуживать его через SSL.

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

Затем я запустил:

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 перед произвольным веб-сервером?

1
задан 30 May 2018 в 04:17
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

0
ответ дан 4 December 2019 в 03:56

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

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

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

.
0
ответ дан 4 December 2019 в 03:56

Теги

Похожие вопросы