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

vid/ 22 октября, 2018/ Шпаргалки сисадмина

Прикручиваем бесплатный 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

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

Бесплатный SSL-сертификат успешно сформирован

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

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

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

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

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

12ssl_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 и в нем меняем:

1include bx/conf/ssl.conf

на

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

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

1# systemctl restart nginx

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

Отключаем доступ по 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

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

116 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/

Поделиться этой записью