Введіть ім'я домену:
.ua .com.ua .in.ua .org.ua
.ru .com .net .org
Показати всі домени

Налаштування Nginx з Let's Encrypt

Відповіді на запитання від компанії "Український хостинг".

Налаштування Nginx з Let's Encrypt на CentOS 7

Let's Encrypt є новим центром сертифікації (CA), що дозволяє безкоштовно отримати та встановити SSL сертифікат для шифрування HTTPS трафіку на веб-серверах.

Перед виконанням інструкції необхідно попередньо налаштувати веб-сервер Nginx або повний стек LEMP.

Також рекомендується створити не root користувача з доступом до sudo .

В інструкції використовується текстовий редактор nano, для якого потрібно виконати команду:

yum install nano

Процедура налаштування Nginx з Let's Encrypt складається з наступних кроків:

  1. Встановлюємо програми Git, Bc:
    sudo yum -y install git bc
  2. Копіюємо проект letsencrypt з GitHub:
    sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
  3. Переходимо до директорії /opt/letsencrypt:
    cd /opt/letsencrypt
  4. Запускаємо генерацію сертифікатів командою letsencrypt-auto certonly, використовуючи плагін webroot (далі замість faq-website.ml та www.faq-website.ml необхідно використовувати назву власного доменного імені).
    В -webroot-path необхідно вказати шлях до кореневої директорії сайту:
    ./letsencrypt-auto certonly -a webroot --webroot-path=/var/www/faq-website.ml/html -d faq-website.ml -d www.faq-website.ml
    Після ініціалізації letsencrypt необхідно ввести адресу існуючої електронної пошти.
    Далі необхідно погодитись з умовами користування Letsencrypt. Для підтвердження введіть
    а
    Потім необхідно підтвердити або відхилити одержання листа від центру сертифікації з інформацією про їх проект (у разі отримання листа було відхилено).
    При успішній генерації сертифікатів у консолі з'явиться таке повідомлення:
    Бачимо, що сертифікати збереглися в /etc/letsencrypt/live/faq-website.ml/ та дата закінчення дії сертифіката 2018-04-11.
  5. Формуємо ключ за алгоритмом шифрування Діффі-Хеллмана, для підвищення рівня безпеки:
    sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    Цей процес може зайняти деякий час, після чого буде створено ключ і поміщений у /etc/ssl/certs/dhparam.pem
    Відкриваємо файл faq-website.ml.conf
    sudo nano /etc/nginx/sites-available/faq-website.ml.conf
    І замінюємо його вміст:
    server {
    # перенаправление с 80 порта, а также с www
    server_name faq-website.ml www.faq-website.ml
    listen 80;
    return 301 https://www.faq-website.ml$request_uri;
    }
    на цей вміст
    server {
    listen 443 ssl;
    server_name faq-website.ml www.faq-website.ml;
    # Указываем пути к сертификатам
    ssl_certificate /etc/letsencrypt/live/faq-website.ml/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/faq-website.ml/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    # позволяем серверу прикреплять OCSP-ответы, тем самым уменьшая время загрузки страниц у пользователей
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security max-age=15768000;
    location ~ /.well-known {
    allow all;
    }
    # The rest of your server block
    root /var/www/faq-website.ml/html;
    index index.html index.htm;
    location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
    }
    }
    Зберігаємо зміну у файлі, натиснувши клавіші Ctrl+x , потім клавішу y і потім клавішу Enter.
  6. Перезавантажуємо Nginx
    sudo systemctl reload nginx
  7. Також необхідно відкрити 143 порт.
    Відкриваємо у текстовому редакторі файл iptables:
    sudo nano /etc/sysconfig/iptables
    І після рядка:
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    вказуємо рядок:
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
    Зберігаємо зміну у файлі, натиснувши клавіші Ctrl+x , потім клавішу y і потім клавішу Enter.
  8. Перезавантажуємо правила для фаєрволу iptables
    sudo service iptables reload
    Відкриваємо сайт.

Див. також:

Будь ласка, виберіть мову сайту за промовчанням: