Djangoの開発サーバはHTTPSを普段に対応してないので、HTTPS対応をどうやって開発すればいいんだろうと思ったら、調べてみた。秘密は開発サーバ、http用とhttps用を二つ立ち上げます。https開発サーバはstunnelでHTTPS対応します。stunnelは普通のソケットをSSL tunnelingをしてくれます。
このドキュメント を使います。
stunnel をインストールしてから、pemファイルを作ります。
openssl req -new -days 365 -nodes -out newreq.pem -keyout /etc/stunnel/stunnel.pem
stunnel の設定ファイルを適当なところに保存します (これから、dev_https)。acceptはhttpsサーバのポート。connectはhttps用の開発サーバのポートになります。
pid =
[https]
accept=8002
connect=8003
stunnel に設定ファイルを指定してdaemonを立ち上げます
stunnel dev_http
https用の開発サーバを立ち上げます。 HTTPS=on の環境変数を設定しておけば、 request.is_secure()などは Trueをちゃんと返す。
HTTPS=on python manage.py runserver 0.0.0.0:8003
http用のサーバを立ち上げる
python manage.py runserver 0.0.0.0:8000
これで、 http://localhost:8001 と https://localhost:8002 で接続することができる。