Поиск по сайту:

Установите SSL-сертификат Let’s Encrypt для Nginx на RHEL 9/8


В этой статье мы расскажем вам, как сгенерировать и установить сертификат SSL/TLS, полученный бесплатно от Центра сертификации Let's Encrypt, который мы будем использовать для защиты HTTP-транзакций веб-сервера Nginx на RHEL и Дистрибутивы на основе RHEL, такие как Fedora, Rocky Linux и AlmaLinux.

Если вы хотите установить Let’s Encrypt для Apache в RHEL и дистрибутивах на его основе, следуйте этому руководству ниже:

Требования

  • Зарегистрированное доменное имя с действительными записями DNS A, указывающими на общедоступный IP-адрес сервера.
  • Веб-сервер Nginx установлен с включенным SSL и виртуальными хостами (только для хостинга с несколькими доменами или поддоменами).

Настройка нашей среды тестирования

Шаг 1. Установите веб-сервер Nginx в системах RHEL

1. На первом этапе, если у вас еще не установлен демон Nginx, выполните приведенные ниже команды с правами root, чтобы установить веб-сервер Nginx из репозиториев Epel.


------------- On RHEL, Rocky & AlmaLinux 9 ------------- 
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

------------- On RHEL, Rocky & AlmaLinux 8 -------------
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

------------- Install Nginx Web Server -------------
yum install nginx

Примечание. Пользователям Fedora не требуется устанавливать репозиторий epel.

Шаг 2. Установите Let’s Encrypt (Certbot) в системах RHEL

2. Самый быстрый способ установки клиента Let's Encrypt в системах Linux — это установка пакетов certbot и python3-certbot-nginx из репозитория epel. .


dnf install certbot python3-certbot-nginx

3. После установки клиента certbot проверьте установленную версию программного обеспечения Let’s Encrypt, выполнив следующую команду:


certbot --version

certbot 1.30.0

Шаг 3. Получите бесплатный SSL-сертификат Let’s Encrypt для Nginx.

4. Процесс получения бесплатного SSL/TLS-сертификата для Nginx будет выполняться вручную с помощью Let's Encrypt Standalone. > плагин.

Для этого метода требуется, чтобы порт 80 был свободен в то время, пока клиент Let’s Encrypt проверяет личность сервера и генерирует сертификаты.

Итак, если Nginx уже запущен, остановите демон с помощью следующей команды и запустите утилиту ss, чтобы убедиться, что порт 80 больше не используется в сетевом стеке.


service nginx stop
systemctl stop nginx
ss -tln

5. Теперь пришло время получить бесплатный SSL-сертификат от Let's Encrypt, выполнив команду certbot с --nginx чтобы инициализировать получение и настройку сертификата безопасности Let’s Encrypt для доменов Nginx.


certbot --nginx
Or
certbot --nginx -d example.com -d www.example.com

6. Наконец, если все прошло как надо, на вашем bash-терминале отобразится поздравительное информационное сообщение. Сообщение также будет отображаться, когда срок действия сертификата истечет.

Шаг 4. Установите SSL-сертификат Let’s Encrypt в Nginx.

9. Теперь, когда у вас есть бесплатный SSL/TLS-сертификат, пришло время установить его на веб-сервер Nginx, чтобы ваш домен мог его использовать.

Все новые сертификаты SSL помещаются в /etc/letsencrypt/live/ в каталоге, названном в честь вашего доменного имени. Используйте команду ls, чтобы просмотреть файлы сертификатов, выданные для вашего домена, и идентифицировать их.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. Чтобы установить файлы сертификатов в Nginx и включить SSL, откройте файл /etc/nginx/nginx.conf для редактирования и добавьте приведенные ниже инструкции после последней строки прослушивания из серверный блок. Используйте приведенную ниже иллюстрацию в качестве руководства.

vi /etc/nginx/nginx.conf

Выдержка из блока SSL Nginx:

SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

Замените строку имя домена для сертификатов SSL, чтобы она соответствовала вашему собственному домену.

11. Наконец, перезапустите службу Nginx и посетите свой домен через протокол HTTPS по адресу https://yourdomain. Страница должна загружаться плавно, без ошибок сертификата.

systemctl restart nginx
service nginx restart

12. Чтобы проверить сертификат SSL/TLS и его целостность, перейдите по следующей ссылке:

https://www.ssllabs.com/ssltest/analyze.html 

13. Если вы получите уведомление о том, что ваш сервер поддерживает слабый обмен ключами DH и общий рейтинг B, создайте новый 13.. Strong>Диффи-Хеллмана в каталоге /etc/nginx/ssl/, чтобы защитить ваш сервер от атаки Logjam, выполнив следующие команды.

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 4096

В этом примере мы использовали ключ 4096, генерация которого на самом деле занимает много времени и приводит к дополнительным нагрузкам на ваш сервер и на SSL-квитирование.

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

14. После создания ключа DH откройте файл конфигурации Nginx и добавьте приведенные ниже инструкции после строки ssl_ciphers, чтобы добавить ключ DH и повысьте уровень безопасности вашего домена до уровня A+.

vi /etc/nginx/nginx.conf

Добавьте следующий фрагмент блока в Nginx.conf:

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. Перезапустите службу Nginx, чтобы применить изменения, и повторно протестируйте сертификат SSL, очистив предыдущий кеш результатов по ссылке, упомянутой выше.

systemctl restart nginx
service nginx restart

Шаг 5. Автоматическое продление Nginx Free позволяет шифровать SSL-сертификаты

16. Let’s Encrypt CA выпускает бесплатные сертификаты SSL/TLS, действительные в течение 90 дней. Сертификаты можно обновить вручную и применить до истечения срока их действия с помощью плагина webroot, не останавливая веб-сервер, введя следующие команды:


certbot --nginx -d example.com -d www.example.com
systemctl reload nginx

При выполнении приведенной выше команды обязательно замените example.com на соответствующий вашему домену.

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


crontab -e

Добавьте следующее задание cron в нижней части файла, которое будет запускаться каждый день в полдень, чтобы проверить срок действия сертификата и обновить его. Опция --quiet сообщает certbot не генерировать выходные данные.


0 12 * * * /usr/bin/certbot renew --quiet

Вот и все! Теперь сервер Nginx может доставлять безопасный веб-контент с помощью бесплатного сертификата SSL/TLS Let’s Encrypt на вашем веб-сайте.