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