Engineer in Tokyo

DjangoのHTTPS対応開発サーバ

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:8001https://localhost:8002 で接続することができる。