Перевод приложения django на https

У меня есть приложение django, которое прекрасно работает на сервере разработки с http://localhost:8081

Мне нужно перевести его на https. Для этого я попробовал 2 метода, но ни один из них не работает.

Метод1: Использование stunnel

Я установил stunnel и сгенерировал cert и ключ с помощью openssl.

openssl genrsa 2048 > ca.key
openssl req -new -x509 -nodes -sha1 -days 365 -key ca.key > ca.cert
cat ca.key ca.cert > ca.pem

Определите dev_https как:

pid=

cert = certs/ca.pem
sslVersion = all
foreground = yes
output = stunnel.log

[https]
accept=10443
connect=8081
<
stunnel certs/dev_https &
HTTPS=on /home/user/python3.9/bin/python3 /path/to/django/app/manage.py runserver localhost:8081
и выполнил следующие команды:

Это дает мне ошибку на консоли от stunnel как:

connect_blocking: connect 127.0.0.1:8081: Connection refused (111)
Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket

из django app gui:

Если я пытаюсь получить доступ к приложению через https://localhost:10443

Этот сайт недоступен

Если я пытаюсь получить доступ к приложению через http://localhost:8081 ---> Оно работает нормально. Но это не требуется.

Метод2: Apache с mod_wsgi

Я установил mod_wsgi с помощью rpm. Затем модифицировал httpd.conf следующим образом:

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias / /path/to/django/app/wsgi.py
WSGIPythonHome /home/user/python3.9
WSGIPythonPath "/home/user/python3.9/lib;/home/user/python3.9/lib/python3.9/site-packages"

<Directory /path/to/django/app>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

и перезапустил httpd.

При запуске приложения django с

HTTPS=on /home/user/python3.9/bin/python3 /path/to/django/app/manage.py runserver localhost:8081

не выдает ошибку в консоли, но приложение по-прежнему недоступно через https.

Любая помощь будет признательна

Команда Django manage.py runserver по умолчанию не поддерживает SSL, возможно поэтому метод 1 не работает для вас.

Проверьте пакет django-extension.

  1. Установите django-расширения с помощью Werkzeug Werkzeug необходим для runserver_plus, что мы и будем использовать
  2. .
pip install django-extensions Werkzeug
  1. Добавьте django_extensions к INSTALLED_APPS
INSTALLED_APPS = [
    # ...
    "django_extensions",
]
  1. запустите локальный сервер разработки в режиме HTTPS с cert & ключом, который вы сгенерировали в OpenSSL
  2. .
python manage.py runserver_plus --cert-file cert.pem --key-file key.pem
Вернуться на верх