Windows Server2016の場合
私は単純なpython Webサーバー(フラスコ内)を持っています。それはうまく機能し、ポート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でflask Webサーバーを実行していますが、暗号化されていない状態でサービスを提供しています。例:.
https://Host/ // fails, because the server is serving plain text
http://Host:443 // works, because the traffic ain't ssl-ified
解決する方法は?
明確にするために:flaskコードに触れずに解決する方法(SSL証明書をファイルシステムに配置したくない、安全ではありません)。netshを使用して終了できると思います任意のWebサーバーの前でSSL?
答えは:netshを忘れて、チケットではないようです。
ここに記載されているように、リバースプロキシとしてIISを使用して解決しました:
https://developers.coveo.com/display/public/SearchREST/Configure+HTTPS+Reverse+Proxy+in+IIS
そしてここ
https://weblogs.asp.net/owscott/creating-a-reverse-proxy-with-url-rewrite-for-iis
私はFlaskにあまり詳しくありません。しかし、SSLを使用するWindowsで実行した他のすべてのpythonアプリは、PEM形式の証明書とキーファイルを直接参照していました。それらはWindows証明書ストアとまったくインターフェイスしなかったか、netsh
構成を必要としませんでした。 。同じことがFlaskにも当てはまると思います。これらのファイルを参照し、HTTPS経由でトラフィックを処理する特定の方法があります。
「python flask ssl」の簡単なウェブ検索は、いくつかの有望な結果をもたらすようです:
コンセンサスは、証明書とキーを参照するSSL.Context
のインスタンスを作成し、それを引数としてapp.run
に渡すことを中心に展開しているようです。