Добавление HTTPS в приложение django на VM (Windows OS) на уровне производства

Мы разрабатываем react native app с django в качестве бэкенда. Мы развернули django на VM (которую мы купили, она имеет Window OS) и там git вытащил и запустил django сервер просто uvicorn backend.asgi:application --host 0.0.0.0 --port 8000, мы хотим добавить https в нем, как мы можем сделать это? У нас нет домена только публичный IP адрес, пожалуйста, ответьте, если у вас есть полезная информация

Для uvicorn,

Для запуска unicorn с https требуются сертификат и закрытый ключ. Рекомендуемый способ их получения - использовать Let's Encrypt.

Для локальной разработки с использованием https можно использовать mkcert для создания действительного сертификата и закрытого ключа.

$ uvicorn main:app --port 5000 --ssl-keyfile=./key.pem --ssl-certfile=./cert.pem

Для django,

Если вы хотите обеспечить защиту по протоколу HTTPS и включили ее на своем сервере, вам могут потребоваться некоторые дополнительные действия:

При необходимости установите SECURE_PROXY_SSL_HEADER, чтобы убедиться, что вы правильно поняли содержащиеся в нем предупреждения. Невыполнение этого требования может привести к уязвимостям CSRF, а неправильное выполнение этого требования также может быть опасным!

Установите для SECURE_SSL_REDIRECT значение True, чтобы запросы по протоколу HTTP перенаправлялись на HTTPS.

Пожалуйста, обратите внимание на предостережения в разделе SECURE_PROXY_SSL_HEADER. В случае обратного прокси-сервера может оказаться проще и безопаснее настроить основной веб-сервер для перенаправления на HTTPS.

Используйте ‘безопасные" файлы cookie.

Если браузер изначально подключается по протоколу HTTP, который используется по умолчанию для большинства браузеров, возможна утечка существующих файлов cookie. По этой причине вам следует установить для параметров SESSION_COOKIE_SECURE и CSRF_COOKIE_SECURE значение True. Это предписывает браузеру отправлять эти файлы cookie только по HTTPS-соединениям. Обратите внимание, что это будет означать, что сеансы не будут работать по протоколу HTTP, а защита CSRF предотвратит прием любых данных POST по протоколу HTTP (что будет нормально, если вы перенаправляете весь HTTP-трафик на HTTPS).

Используйте HTTP Strict Transport Security (HSTS) для обеспечения строгой транспортной безопасности

HSTS - это HTTP-заголовок, который информирует браузер о том, что все будущие подключения к определенному сайту всегда должны выполняться по протоколу HTTPS. В сочетании с перенаправлением запросов по протоколу HTTP на HTTPS это гарантирует, что соединения всегда будут защищены по протоколу SSL, при условии, что произошло хотя бы одно успешное подключение. HSTS может быть настроен либо с помощью SECURE_HSTS_SECONDS, SECURE_HSTS_INCLUDE_SUBDOMAINS и SECURE_HSTS_PRELOAD, либо на веб-сервере.

Я купил домен, затем настроил nginx на сервере и привязал публичный IP к доменному имени, а затем с помощью win-acme создал бесплатный SSL-сертификат, и теперь он работает

Вернуться на верх