くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

DjangoのrunserverをHTTPSで起動する(django-extensionsでRunServerPlus)

Djangoの開発サーバをHTTPSで起動したいなと思ったら、
django-extensionsRunServerPlusでできるよう。
簡単にできたので、その時の備忘録。

インストール

まずはインストール

$ pip install django-extensions

# RunServerPlusを使うためのライブラリ
$ pip install Werkzeug
$ pip install pyOpenSSL

RunServerPlusはWerkzeug デバッガーが組み込まれてるので、Werkzeugも追加

settings.pyに設定を追加

インストールしたので、settings.pyに設定を追加していく

# アプリに追加
INSTALLED_APPS = [
    # ...
    'django_extensions',
]

# ロギングを追加: DEBUGだと多いのでWARN
LOGGING = {
    # ...
    'loggers': {
        ...
        'werkzeug': {
            'handlers': ['console'],
            'level': 'WARN',
            'propagate': True,
        },
    },
}

# 起動するIPアドレスとポートを指定
RUNSERVERPLUS_SERVER_ADDRESS_PORT = '0.0.0.0:8000'

# SSL関連の設定を有効化
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

オレオレ証明書(自己証明書)の作成

証明書が必要なので、オレオレ証明書を用意しておく。

$ openssl genrsa 2048 > server.key
$ openssl req -new -key server.key > server.csr
$ openssl x509 -in server.csr -days 365000 -req -signkey server.key > server.crt
# おまけ: パスフレーズをあとで削除する
$ openssl rsa -in server.key -out server.key

HTTPSで起動

そして、起動。runserverの代わりに、runserver_plusで起動すればOK!

$ python manage.py runserver_plus --cert-file ./server.crt

以上!!

参考にしたサイト様