DevGang
Авторизоваться

Как запустить локальный сервер разработки Django через HTTPS с доверенным самоподписной SSL-сертификатом

Создание самоподписной SSL-сертификата для локальной разработки Django всегда было проблемой. До того дня, как я обнаружил mkcert, инструмент с нулевой конфигурацией, который создает локально доверенные сертификаты разработки, ваш браузер не будет жаловаться.

В этом руководстве я поделюсь своим процессом, и вы узнаете, как создать локальный сертификат SSL для вашего проекта Django и запустить его в режиме разработки с включенным HTTPS .

Шаг 1. Создание локального SSL-сертификата

Во-первых, давайте установим mkcert на вашу машину. Если вы работаете в macOS, вы можете использовать для этого диспетчер пакетов Homebrew. Выполните следующую команду в своем терминале:

brew install mkcert
Если вы работаете в Linux или Windows, обратитесь к инструкциям по установке в репозитории пакетов (https://github.com/FiloSottile/mkcert#windows).

Затем давайте сделаем так, чтобы ваша операционная система доверяла локальным сертификатам, которые мы собираемся сгенерировать. Для этого вам необходимо установить локальный центр сертификации (CA) в системном хранилище доверенных сертификатов. Выполните следующую команду:

mkcert -install

Далее вам нужно сгенерировать сертификат для домена localhost.

В терминале перейдите в корень вашего проекта Django. Затем запустите следующую команду терминала, чтобы сгенерировать сертификат для localhost и 127.0.0.1:

mkcert -cert-file cert.pem -key-file key.pem localhost 127.0.0.1
Если вы планируете запускать локальный сервер в домене, отличном от localhost, замените localhost доменом по вашему выбору.

Если все прошло правильно, вы должны увидеть следующий результат:

The certificate is at "cert.pem" and the key at "key.pem"

В результате мы сгенерировали локальный сертификат SSL, который будет работать с любым сервером разработки localhost, работающим на любом порту.

К вашему сведению: вы можете повторно использовать этот сертификат с любым локальным проектом, работающим на localhost. Сертификат не имеет ничего общего с Django или Python.

Шаг 2 - Настройка сервера Django для работы с HTTPS

Команда Django manage.py runserver по умолчанию не поддерживает SSL; поэтому нам нужно использовать альтернативную команду manage.py runserver_plus, которая является частью отличного пакета Django Extensions.

Выполните следующую команду, чтобы установить расширения Django вместе с сервером Werkzeug:

pip install django-extensions Werkzeug
Команда runserver_plus требует установки сервера Werkzeug, который более известен в мире фреймворка Python Flask.

Затем откройте файл settings.py в редакторе кода и добавьте django_extensions в список INSTALLED_APPS:

NSTALLED_APPS = [
    # other apps
    "django_extensions",
]

Наконец, запустите локальный сервер разработки в режиме HTTPS, выполнив команду:

python manage.py runserver_plus --cert-file cert.pem --key-file key.pem

Вот и все; теперь вы должны увидеть локальный сервер разработки, работающий по адресу по умолчанию https://localhost:8000.

#Python #Django
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться