Django や Flask などのフレームワークを使用して Web アプリを開発する場合、通常、組み込みサーバーを使用してプログラムの開発とデバッグが行われ、プログラムの完成後にデプロイのために本番環境に転送されます。問題は、これらの組み込みサーバーが通常 HTTPS をサポートしていないことです。開発中に HTTPS を使用してテストできるようにしたいのですが、テストせずに実稼働環境にデプロイしたくないため、組み込みサーバーが必要です。 HTTPS をサポートします。
この問題は、外部プログラム stunnel によって解決できます。stunnel の機能は、OpenSSL ライブラリを通じて TCP セッションを暗号化し、安全なチャネルを確立し、暗号化なしまたは暗号化されていないプログラムを保護することです。これには 2 つの主な機能があります:
暗号化されていないデータ ストリームを受信し、SSL 暗号化を実行して、暗号化されたデータ ストリームをネットワーク経由で送信します。
暗号化されたデータ ストリームを復号化し、復号化されたデータ ストリームをネットワーク経由で別のプログラムに送信します。
stunnel の機能を理解すると、stunnel を使用して SSL 暗号化チャネルを確立し、それを Django/Flask 組み込みサーバーにバインドすることを簡単に考えることができます。Stunnel はポート 443 を開始してユーザーの HTTPS リクエストを受け入れ、それを復号化して送信します。組み込みサーバーの 8000 ポート。処理後、組み込みサーバーはデータを stunnel に送信し、暗号化してブラウザ ユーザーに返します。
stunnel:
を Django/Flask 開発サーバーと同じサーバーにインストールします
# yum install stunnel(在 CentOS 上)
$ sudo apt-get install stunnel4(在 Ubuntu 上)
# openssl req -new -x509 -days 365 -nodes -out vpsee.pem -keyout vpsee.pem # chmod 600 vpsee.pem
# vi https pid = cert = vpsee.pem debug = 7 foreground = yes [https] accept = 443 connect = 8000 # stunnel https
# HTTPS=1 python manage.py runserver 0.0.0.0:8000
Flask 組み込みサーバーを起動するのに特別なことは何もありません。ポートを 8000 に変更して通常の方法で起動するだけです。
# vi run.py #!flask/bin/python from app import app app.run(host='0.0.0.0', port=8000, debug = True) # ./run.py * Running on http://0.0.0.0:8000/ * Restarting with reloader