Кеше мен 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-сервері ұсынамын.
Добрый день хочу обновить сертификат, но получаю следующее
. Как правильно обновить сертифика, подскажите? Может что в конфиге поправить?Добрый день. Либо webroot не отработал как следует, либо вы где-то в настройке http накосячили. Смотрите строчки, где указывается путь к ssl сертификату в конфиге nginx.