X

Прикручиваем бесплатный SSL-сертификат от Let’s Encrypts к “Битрикс: Веб-окружение”

Продолжаем разбираться с “Битрикс: Веб-окружение”. В прошлой статье разобрались, с установкой и настройкой. В этой расскажу, как получить и привязать бесплатный SSL-сертификат от Let’s Encrypt в “Битрикс: Веб-окружение”.

Получаем бесплатный SSL-сертификат

Для управления выдаваемыми сертификатами у Let’s Encrypt есть специальное решение под названием certbot. Подробную документацию можете найти на официальном сайте, а я просто покажу рабочую схему.
Первым делом:

# yum -y install yum-utils
# yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional

И ставим, собственно, сам certbot.

# yum install certbot

На этом подготовительный этап завершен.
Теперь собственно попросим выдать нам сертификат. Следующий момент, метод который я использую подразумевает, что будет использован собственный механизм от Let’s Encrypt, который работает через 443 порт, на котором у нас висит nginx. Способов обхода масса, самый простой остановить nginx, получить сертификат и запустить заново.

# systemctl stop nginx

Запрашиваем сертификат. yourdomain.ru замените на ваш домен.

# certbot certonly --standalone -d yourdomain.ru -d www.yourdomain.ru

Ответив на несколько простых вопросов вы получите сообщение об успехе.

Сертификат успешно сформирован


Вот и все, наши сертификаты готовы. Находятся они в /etc/letsencrypt/live/yourdomain.ru/

Добавляем SSL-сертификаты к Битрикс

Дело за малым, осталось привязать сертификаты к нашему сайту. Если у вас один сайт в веб-окружении, то нам понадобится файл /etc/nginx/bx/conf/ssl.conf. Открываем файл, находим строки:

ssl_certificate         /etc/nginx/ssl/cert.pem;
ssl_certificate_key     /etc/nginx/ssl/cert.pem;

Меняем пути на наши сертификаты.

ssl_certificate        /etc/letsencrypt/live/yourdomain.ru/fullchain.pem;
ssl_certificate_key    /etc/letsencrypt/live/yourdomain.ru/privkey.pem;

Если у вас несколько сайтов, то делаем следующие шаги.
Сначала создадим конфиг под сайт.

# cp /etc/nginx/bx/conf/ssl.conf /etc/nginx/bx/conf/ssl.yourdomain.ru.conf

Именно в нем указываем пути к нашим сертификатам, так же как описано выше.
Затем находим файл /etc/nginx/bx/site_avaliable/bx_ext_ssl_yourdomain.ru.conf и в нем меняем:

include bx/conf/ssl.conf

на

include bx/conf/sl.yourdomain.ru.conf

Сохраняем файл и перезапускаем nginx.

# systemctl restart nginx

Перейдите на https://yourdomain.ru и убедитесь, что все работает.
Далее в меню веб-окружения перейдите 6. Manage sites in the pool, 5. Change https settings on site. Выберите ваш домен и отключите доступ по http.

Отключаем доступ по http


Все, теперь ваш сайт работает по https и заметьте, совершенно бесплатно.

Настраиваем автоматическое продление сертификата

Естественно, что бесплатный SSL-сертификат не может быть идеальным. Срок действия сертификатов от Let’s Encrypt 90 дней, против года для платных. К счастью, это не такая уж и большая проблема. Стандартными механизмами предусмотрено автоматическое продление. Для этого надо выполнить команду:

# certbot renew

После этого, все сертификаты которые истекают в ближайшие 30 дней будут обновлены. Есть следующая особенность, для обновления используется тот же механизм, что и для получения. В нашем случае это --standalone режим, который требует отключения nginx, для работы по 443 порту. Но и это предусмотрено – для certbot можно указать параметры --pre-hook и --post-hook, которые выполнят системные команды перед и после работы certbot. Таким образом наша строка обновления сертификатов приобретает следующий вид:

# certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"

Запустите с указанием дополнительного параметра --dry-run (прогонит процесс в холостую) и убедитесь, что ошибок нет.

# certbot renew --dry-run --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"

Если все отлично, то добавим задание в cron, которое, скажем, раз в сутки в 2:16 (время сами выберите) ночи будет проверять и при необходимости обновлять наши сертификаты:

# crontab -e

и добавляем задание

16 2 * * * /usr/bin/certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" >> /var/log/renew.log
hc:

View Comments (6)

  • Вот за такую статью не лень и зарегистрирооваться чтобы сказать: спасибо!

  • Привет,Ha имя пoдгoтoвили билeт нa лoтepeю. Пpимитe в личнoм кaбинeтe => https://forms.yandex.com/cloud/63147fd81a862292755fbcc5/?hs=4eced100abce81828e91f89fb90fbccf& says:

    hl3u6o

  • Get free iPhone 14 Pro Max: https://www.estrichbau-lampe.de/files/go.php hs=4eced100abce81828e91f89fb90fbccf* says:

    g5wr4a

  • Get free iPhone 15: http://bgtconsultinggroup.com/uploads/go.php hs=4eced100abce81828e91f89fb90fbccf* says:

    nnrzjq