Как установить Let’s Encrypt SSL для NGINX на Rocky Linux 8

Как установить Let’s Encrypt SSL для NGINX на Rocky Linux 8

 

Безопасность — одна из важнейших задач владельцев веб-сайтов, особенно если вы используете магазин электронной коммерции или сайт, который принимает конфиденциальную информацию пользователей, такую ​​как имена пользователей и пароли. Простой протокол HTTP небезопасен, поскольку данные отправляются в виде обычного текста, и хакеры могут подслушивать сообщения, отправляемые на веб-сервер и с него.

Чтобы избежать этого риска, рекомендуется защитить веб-сервер с помощью сертификата TLS / SSL. Это криптографический цифровой сертификат, который шифрует ваш веб-сервер и обеспечивает шифрование данных, которыми обмениваются с веб-сервером.

SSL-сертификат Let’s Encrypt — это цифровой сертификат, предоставляемый Let’s Encrypt CA ( центром сертификации) для защиты веб-сервера. Это бесплатный сертификат TLS / SSL, действительный всего 90 дней, после чего требуется продление до истечения срока его действия. Это выгодно для стартапов или частных лиц, которые не могут позволить себе премиум-сертификат SSL для своих блогов или веб-сайтов.

В этом руководстве мы продемонстрируем, как вы можете установить сертификат Let’s Encrypt SSL / TLS для NGINX на Rocky Linux 8.

Что вам нужно

Во-первых, убедитесь, что у вас есть экземпляр сервера Rocky Linux 8 в облаке или локально и уже настроен с пользователем sudo.

Затем убедитесь, что у вас есть полное доменное имя (FQDN), указывающее на общедоступный IP-адрес вашего сервера. Для этого перейдите к своему регистратору домена и в настройках DNS настройте запись A, чтобы указать имя домена на общедоступный IP-адрес сервера. Ниже приведен фрагмент моей записи A.

В этом руководстве мы используем доменное имя infoit.com.ua, которое указывает на IP-адрес сервера 34.134.239.201.

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8

Разобравшись с этим, давайте приступим!

Шаг 1) Установите веб-сервер Nginx

Начнем с установки веб-сервера Nginx на Rocky 8. Но сначала давайте обновим системный пакет и обновим репозитории.

$ sudo dnf update

Обновление может занять некоторое время, поэтому подождите, пока оно не завершится.

После завершения обновления перезагрузите систему один раз, а затем установите веб-сервер nginx следующим образом:

$ sudo dnf install nginx

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 1

По умолчанию nginx не запускается автоматически. Итак, сделайте все возможное и запустите службу nginx.

$ sudo systemctl start nginx

Затем разрешите веб-серверу запускаться во время загрузки или после перезагрузки.

$ sudo systemctl enable nginx

Теперь веб-сервер должен работать должным образом и прослушивать порт 80. Вы можете подтвердить это, выполнив команду

$ sudo systemctl status nginx

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 2

Вы также можете проверить это в веб-браузере. Но сначала разрешите HTTP-трафик (как HTTP, так и HTTPS) на брандмауэре, выполнив показанные команды

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent

Затем перезагрузите брандмауэр, чтобы изменения вступили в силу.

$ sudo firewall-cmd --reload

Затем просмотрите IP-адрес или доменное имя вашего сервера.

http://domain_name

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 3

Шаг 2) Создайте корень документа для домена

Мы закончили установку веб-сервера. Следующим шагом является создание каталога, в котором будут размещаться файлы домена. Мы создадим каталог домена по пути infoit.com.ua, как показано, с помощью команды mkdir.

$ sudo mkdir -p /var/www/infoit.com.ua/html

В корне документа домена вы найдете файлы веб-сайта, включая HTML, CSS, JavaScript и изображения. В целях демонстрации мы собираемся создать простой файл index.html .

$ sudo vi /var/www/infoit.com.ua/html/index.html

Затем вставьте следующий образец HTML-кода и сохраните изменения.

<!DOCTYPE html>
<html>
    <head>
        <title>Welcome to infoit.com.ua</title>
    </head>
    <body>
  <h1>Hey Guys! Our Nginx server block is working.</h1>
    </body>
</html>

Используйте команду chown, чтобы установить владельца каталога домена, как показано ниже, чтобы избежать проблем с получением разрешений.

$ sudo chown -R nginx /var/www/infoit.com.ua/

Затем установите разрешения таким образом, чтобы у групповых и глобальных пользователей были права на чтение и выполнение файлов домена.

$ sudo chmod -R 755 /var/www/infoit.com.ua/

Мы закончили настройку корня документа для домена и установили права собственности и разрешения. Давайте продолжим и настроим файл блока сервера.

Шаг 3) Создайте серверный блок Nginx

Блок сервера Nginx эквивалентен виртуальному хосту apache. В блоке сервера вы определяете настройки сайта и указываете веб-серверу nginx, где размещать файлы домена.

Файл конфигурации серверного блока создается в каталоге /etc/nginx/conf.d. Мы создадим наш в том же каталоге, как показано ниже.

$ sudo vi /etc/nginx/conf.d/infoit.com.ua.conf

Скопируйте и вставьте следующие строки. Обязательно замените доменное имя infoit.com.ua своим собственным доменом.

server {
    listen 80;
    server_name infoit.com.ua www.infoit.com.ua;
    root /var/www/infoit.com.ua/html;
    index index.php index.html index.htm;
    access_log /var/log/nginx/infoit.com.ua.access.log;
    error_log /var/log/nginx/infoit.com.ua.error.log;
}

Сохраните изменения и выйдите из файла блока сервера.

Затем убедитесь, что все конфигурации Nginx в порядке. Если все в порядке, вы должны отобразить результат.

$ sudo nginx -t

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 12

Чтобы Nginx знал обо всех изменениях, включая корень документа домена и файл блока сервера, перезапустите веб-сервер.

$ sudo systemctl restart nginx

Затем подтвердите текущий статус Nginx.

$ sudo systemctl status nginx

Затем установите SELinux в разрешающий режим с помощью команды:

$ sudo setenforce permissive

Чтобы убедиться, что он установлен в разрешающий режим, выполните команду:

$ sudo getenforce

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 4

Выполните команду ниже sed, чтобы навсегда установить режим selinux как разрешающий.

$ sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux

Чтобы убедиться, что файл блока сервера настроен правильно, еще раз просмотрите свое доменное имя.

http: // имя_домена

Вы должны получить положительное подтверждение, как показано ниже.

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 5

Шаг 4) Установите Certbot

Остался единственный шаг — установить Let’s Encrypt и защитить веб-сервер Nginx. Однако для этого нам нужно установить certbot. Написанный на Python и разработанный Electronic Frontier Foundation, Certbot является полнофункциональным клиентом для Let’s Encrypt CA. Он запускается на веб-сервере и позволяет автоматически настраивать SSL-сертификат для вашего веб-сервера с помощью одной команды.

Сначала установите репозиторий EPEL, который предоставляет дополнительные высококачественные пакеты для дистрибутивов на основе RHEL.

$ sudo dnf install -y epel-release

После установки установите certbot и модуль certbot для Nginx.

$ sudo dnf install certbot python3-certbot-nginx

Это устанавливает certbot, модуль certbot для хоста Nginx других пакетов и зависимостей.

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 6

Шаг 4) Установите сертификат Let’s Encrypt SSL / TLS

Наконец, запустите клиент certbot, чтобы установить сертификат SSL.

$ sudo certbot --nginx

Это проведет вас через серию подсказок. Во-первых, укажите адрес электронной почты, который будет использоваться EFF для отправки вам обновлений для продления и безопасности. Затем примите Условия использования, нажав «Y». При желании вы можете нажать «Y», чтобы позволить EFF присылать вам регулярные обновления, касающиеся их усилий по обеспечению безопасности Интернета, новостей и кампаний. Наконец, выберите доменные имена для шифрования. В нашем случае мы нажали кнопку « ENTER », чтобы выбрать все доменные имена.

Certbot получит сертификат SSL / TLS и развернет его для указанных доменных имен. Это включает протокол HTTPS для вашего домена, по сути, шифрование трафика, передаваемого с веб-сервером.

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 7

Чтобы убедиться, что HTTPS включен, вернитесь в браузер и перезагрузите его. На этот раз вы заметите значок замка в строке URL-адреса — это признак того, что сайт зашифрован.

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 8

Щелкните значок и выберите « Сертификат ».

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 9

Это отображает сведения о сертификате, как указано

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 10

Кроме того, вы можете проверить статус своего веб-сервера в SSL Labs, который представляет собой сайт, который выполняет глубокий анализ веб-сервера через Интернет. Вы должны получить рейтинг A, как показано.

 

Как установить Let's Encrypt SSL для NGINX на Rocky Linux 8 11

Шаг 5) Управление продлением SSL-сертификата

Сертификат Let’s Encrypt действителен в течение 90 дней, однако Let’s encrypt рекомендует обновлять сертификат каждые 60 дней. Уведомления по электронной почте будут отправляться вам в течение последних 20 дней до истечения срока их действия с частотой, увеличивающейся в последние 10 дней.

Вы можете вручную обновить сертификат следующим образом.

$ sudo certbot renew

К счастью, вы можете автоматизировать обновление, добавив новое задание cron. Итак, открываем файл crontab .

$ crontab -e

И добавьте показанную строку. Сохраните изменения и выйдите.

0 0 * * * /usr/bin/certbot renew > /dev/null 2>&1

Это все. Спасибо, что зашли так далеко. Мы продемонстрировали, как установить SSL-сертификат Let’s Encrypt для Nginx на Rocky Linux 8.