Evgenii Legotckoi
Evgenii LegotckoiҚаң. 22, 2017, 3:05 Т.Ж.

Django - 019-сабақ. Let's Encrypt сайтында HTTPS протоколын орнату

Кеше мен Google -дан бақыт хатын алдым, себебі мен Google іздеу жүйесінде сайттың индекстелуін бақылау үшін Google Search Console пайдаланамын. Хаттың мәні мынада: Google Chrome құпия сөзді қажет ететін беттерде http протоколын пайдаланатын сайттың қауіпсіздігі туралы хабарлайды. Егер сіз менің сайтымда авторизация формасы барлық беттерде орналасқан деп есептесеңіз, онда ескерту сайттың барлық беттерінде болады. Ең жағымды жағдай емес, сондықтан мен тез SSL сертификатын алып, https конфигурациялауым керек болды.

Қазіргі уақытта 90 күн мерзімге тегін сертификаттар беретін Let`s Encrypt сертификаттау орталығы жұмыс істейді. Бұл CA-ға Electronic Frontier Foundation (EFF), Mozilla Foundation, Akamai, Cisco Systems қолдау көрсетеді.

Сертификат алу және орнату процесі автоматтандырылған, бірақ сайт Django және Nginx жүйелерінде жұмыс істейтін жағдайда, Nginx сервер параметрлерінде қосымша жұмыс істеу қажет болады.


Сертификат алу

Сертификат алу және автоматты түрде жаңарту үшін Certbot бағдарламалық құралы пайдаланылады. Let`s encrypt веб-сайтында осы бағдарламалық құралға сілтеме бар, онда операциялық жүйенің түрін және пайдаланылатын серверді таңдауға болады. сайтыңыздағы мазмұнды көрсету. Менің жағдайда бұл Nginx және Ubuntu 16.04 .

Сондай-ақ сертификатты орнату және алу бойынша нұсқаулықтар болады.

Сертификаттау бағдарламалық құралын орнату үшін келесі пәрменді пайдаланыңыз:

sudo apt-get install letsencrypt 

Одан кейін келесі пәрменмен webroot плагинін пайдаланып сертификат алу керек:

sudo letsencrypt certonly --webroot -w /var/www/example -d example.com -d www.example.com 

Сайтыңызды сертификаттауға арналған каталог көрсетілген жағдайда, бұл жағдайда /var/www/example , оны және сертификаттар алатын сәйкес домендерді жасау керек.

Бұл жағдайда бір ескерту бар. Бұл қадамда сіз Nginx конфигурациялауыңыз керек, өйткені /var/www/example каталогында жасырын .well-known каталогы жасалады, ол алу үшін қажет. сертификат. Nginx бастапқы орнату туралы қосымша ақпаратты тиісті мақаладан оқи аласыз.

Сондықтан біз алдымен Nginx параметрін төменде көрсетілгендей конфигурациялап, оны қайта іске қосамыз.

server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    location /.well-known {
        alias /var/www/example/.well-known;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Содан кейін сіз SSL сертификатын сәтті аласыз.

https протоколын орнату

Біз сертификатты алғаннан кейін https протоколын конфигурациялауымыз керек және ол үшін серверде 443 портын ашуымыз керек.

sudo ufw allow 443/tcp

Және Nginx. конфигурациялаңыз.

server {    
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;  

    location /.well-known {
        alias /var/www/example/.well-known;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Бұл жағдайда сіз сертификаттарыңызға жолдарды және сервер қосылымды күтетін порттарды көрсетесіз.

http қосылымын орнату

Пайдаланушылар үшін http протоколы арқылы қосылу мүмкіндігін қалдыру - бұл сізге байланысты, бірақ https бар болса, осы протоколды пайдаланып жұмыс істеу мүмкіндігін қалдырудың мәні неде. пайдаланушы http бар беттерден https** бар бір бетке.

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;  


    location /.well-known {
        alias /var/www/example/.well-known;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Біз Nginx жүйесін қайта іске қосамыз және http арқылы қосылуға тырысқанда, https арқылы қосылуға автоматты түрде қайта бағытталатынымызды тексереміз.

Куәлікті автоматты түрде жаңарту

Сертификатты жаңарту үшін келесі пәрмен пайдаланылады:

letsencrypt renew 

Бірақ процесті cron (белгілі бір уақытта немесе белгілі бір аралықтарда тапсырмаларды орындауға арналған демон бағдарламасы) көмегімен автоматтандыруға болады.

Кронды түбірлік пайдаланушы ретінде өңдеу үшін келесі пәрменді іске қосыңыз:

sudo crontab -e

Сізге ықтимал редакторлар арасында таңдау беріледі, өз қалауыңыз бойынша редакторды таңдаңыз. Мен nano қолданамын. Содан кейін келесі жолды cron. конфигурациясына қойыңыз

30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.log

Бұл жағдайда дүйсенбі күні сағат 2:30-да куәлікті жаңарту әрекеті жасалады.

Мазмұнды түзету

Соңғысы - сайттағы барлық сілтемелерді реттеу. Яғни, сайттың ішкі сілтемесі қосымша қайта бағыттаулар жасамауы үшін http-ді https-қа өзгерту керек.

Django үшін Timeweb хостының VDS-сервері ұсынамын.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

ArtDev
  • Маусым 2, 2017, 2:58 Т.Қ.

Добрый день хочу обновить сертификат, но получаю следующее

The following certs are not due for renewal yet: /etc/letsencrypt/live/mysite_ru/fullchain.pem (skipped) No renewals were attempted
. Как правильно обновить сертифика, подскажите? Может что в конфиге поправить?
Evgenii Legotckoi
  • Маусым 3, 2017, 2:34 Т.Ж.

Добрый день. Либо webroot не отработал как следует, либо вы где-то в настройке http накосячили. Смотрите строчки, где указывается путь к ssl сертификату в конфиге nginx.

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
Г

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:66ұпай,
  • Бағалау ұпайлары-1
t

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:33ұпай,
  • Бағалау ұпайлары-10
t

Qt - Тест 001. Сигналы и слоты

  • Нәтиже:52ұпай,
  • Бағалау ұпайлары-4
Соңғы пікірлер
G
GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssrАқп. 8, 2024, 6:43 Т.Қ.
Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
F
FynjyШілде 22, 2024, 4:15 Т.Ж.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
BlinCT
BlinCTМаусым 25, 2024, 1 Т.Ж.
Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
BlinCT
BlinCTМамыр 5, 2024, 5:46 Т.Ж.
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

Бізді әлеуметтік желілерде бақылаңыз