Как установить 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.
Разобравшись с этим, давайте приступим!
Шаг 1) Установите веб-сервер Nginx
Начнем с установки веб-сервера Nginx на Rocky 8. Но сначала давайте обновим системный пакет и обновим репозитории.
$ sudo dnf update
Обновление может занять некоторое время, поэтому подождите, пока оно не завершится.
После завершения обновления перезагрузите систему один раз, а затем установите веб-сервер nginx следующим образом:
$ sudo dnf install nginx
По умолчанию nginx не запускается автоматически. Итак, сделайте все возможное и запустите службу nginx.
$ sudo systemctl start nginx
Затем разрешите веб-серверу запускаться во время загрузки или после перезагрузки.
$ sudo systemctl enable nginx
Теперь веб-сервер должен работать должным образом и прослушивать порт 80. Вы можете подтвердить это, выполнив команду
$ sudo systemctl status nginx
Вы также можете проверить это в веб-браузере. Но сначала разрешите 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
Шаг 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
Чтобы Nginx знал обо всех изменениях, включая корень документа домена и файл блока сервера, перезапустите веб-сервер.
$ sudo systemctl restart nginx
Затем подтвердите текущий статус Nginx.
$ sudo systemctl status nginx
Затем установите SELinux в разрешающий режим с помощью команды:
$ sudo setenforce permissive
Чтобы убедиться, что он установлен в разрешающий режим, выполните команду:
$ sudo getenforce
Выполните команду ниже sed, чтобы навсегда установить режим selinux как разрешающий.
$ sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux
Чтобы убедиться, что файл блока сервера настроен правильно, еще раз просмотрите свое доменное имя.
http: // имя_домена
Вы должны получить положительное подтверждение, как показано ниже.
Шаг 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 других пакетов и зависимостей.
Шаг 4) Установите сертификат Let’s Encrypt SSL / TLS
Наконец, запустите клиент certbot, чтобы установить сертификат SSL.
$ sudo certbot --nginx
Это проведет вас через серию подсказок. Во-первых, укажите адрес электронной почты, который будет использоваться EFF для отправки вам обновлений для продления и безопасности. Затем примите Условия использования, нажав «Y». При желании вы можете нажать «Y», чтобы позволить EFF присылать вам регулярные обновления, касающиеся их усилий по обеспечению безопасности Интернета, новостей и кампаний. Наконец, выберите доменные имена для шифрования. В нашем случае мы нажали кнопку « ENTER », чтобы выбрать все доменные имена.
Certbot получит сертификат SSL / TLS и развернет его для указанных доменных имен. Это включает протокол HTTPS для вашего домена, по сути, шифрование трафика, передаваемого с веб-сервером.
Чтобы убедиться, что HTTPS включен, вернитесь в браузер и перезагрузите его. На этот раз вы заметите значок замка в строке URL-адреса — это признак того, что сайт зашифрован.
Щелкните значок и выберите « Сертификат ».
Это отображает сведения о сертификате, как указано
Кроме того, вы можете проверить статус своего веб-сервера в SSL Labs, который представляет собой сайт, который выполняет глубокий анализ веб-сервера через Интернет. Вы должны получить рейтинг A, как показано.
Шаг 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.