Прикручиваем бесплатный SSL-сертификат
Прикручиваем бесплатный SSL-сертификат от Let’s Encrypts к «Битрикс: Веб-окружение»
Получаем бесплатный SSL-сертификат
Для управления выдаваемыми сертификатами у Let’s Encrypt есть специальное решение под названием certbot. Подробную документацию можете найти на официальном сайте, а я просто покажу рабочую схему.
Первым делом:
12 | # yum -y install yum-utils# yum-config-manager —enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional |
И ставим, собственно, сам certbot
.
1 | # yum install certbot |
На этом подготовительный этап завершен.
Теперь собственно попросим выдать нам сертификат. Следующий момент, метод который я использую подразумевает, что будет использован собственный механизм от Let’s Encrypt, который работает через 443 порт, на котором у нас висит nginx. Способов обхода масса, самый простой остановить nginx, получить сертификат и запустить заново.
1 | # systemctl stop nginx |
Запрашиваем сертификат. yourdomain.ru
замените на ваш домен.
1 | # certbot certonly —standalone -d yourdomain.ru -d www.yourdomain.ru |
Ответив на несколько простых вопросов вы получите сообщение об успехе.

Сертификат успешно сформирован
Вот и все, наши сертификаты готовы. Находятся они в /etc/letsencrypt/live/yourdomain.ru/
Добавляем SSL-сертификаты к Битрикс
Дело за малым, осталось привязать сертификаты к нашему сайту. Если у вас один сайт в веб-окружении, то нам понадобится файл /etc/nginx/bx/conf/ssl.conf
. Открываем файл, находим строки:
12 | ssl_certificate /etc/nginx/ssl/cert.pem;ssl_certificate_key /etc/nginx/ssl/cert.pem; |
Меняем пути на наши сертификаты.
12 | ssl_certificate /etc/letsencrypt/live/yourdomain.ru/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/yourdomain.ru/privkey.pem; |
Если у вас несколько сайтов, то делаем следующие шаги.
Сначала создадим конфиг под сайт.
1 | # 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
и в нем меняем:
1 | include bx/conf/ssl.conf |
на
1 | include bx/conf/sl.yourdomain.ru.conf |
Сохраняем файл и перезапускаем nginx.
1 | # 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 дней, против года для платных. К счастью, это не такая уж и большая проблема. Стандартными механизмами предусмотрено автоматическое продление. Для этого надо выполнить команду:
1 | # certbot renew |
После этого, все сертификаты которые истекают в ближайшие 30 дней будут обновлены. Есть следующая особенность, для обновления используется тот же механизм, что и для получения. В нашем случае это --standalone
режим, который требует отключения nginx, для работы по 443 порту. Но и это предусмотрено — для certbot
можно указать параметры --pre-hook
и --post-hook
, которые выполнят системные команды перед и после работы certbot
. Таким образом наша строка обновления сертификатов приобретает следующий вид:
1 | # certbot renew —pre-hook «systemctl stop nginx» —post-hook «systemctl start nginx» |
Запустите с указанием дополнительного параметра --dry-run
(прогонит процесс в холостую) и убедитесь, что ошибок нет.
1 | # certbot renew —dry-run —pre-hook «systemctl stop nginx» —post-hook «systemctl start nginx» |
Если все отлично, то добавим задание в cron, которое, скажем, раз в сутки в 2:16 (время сами выберите) ночи будет проверять и при необходимости обновлять наши сертификаты:
1 | # crontab -e |
и добавляем задание
1 | 16 2 * * * /usr/bin/certbot renew —pre-hook «systemctl stop nginx» —post-hook «systemctl start nginx» >> /var/log/renew.log |
Оригинал статьи расположен https://host-consult.ru/ssl-sertifikat-letencrypts-v-bitriks/