Введите имя домена:
.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
    Открываем сайт.

См.также: