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.

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
OI
  • Ora Iro
  • Жел. 24, 2024, 6:38 Т.Ж.

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

  • Нәтиже:40ұпай,
  • Бағалау ұпайлары-8
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Нәтиже:50ұпай,
  • Бағалау ұпайлары-4
m
  • molni99
  • Қаз. 26, 2024, 1:37 Т.Ж.

C++ - Тест 004. Указатели, Массивы и Циклы

  • Нәтиже:80ұпай,
  • Бағалау ұпайлары4
Соңғы пікірлер
ИМ
Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProjectМаусым 4, 2022, 3:49 Т.Ж.
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9AnonimҚаз. 25, 2024, 9:10 Т.Ж.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

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