Генерация и подключение бесплатного Let's Encrypt сертификата
В меню bitrixvm последовательно идем по цепочке 8. Manage web nodes in the pool -> 3. Certificates configuration -> 1. Configure Let's encrypt certificate.
 Далее указываем нужный нам сайт (можно указать несколько сайтов через запятую), его dns имя (совпадает с именем домена), технический email для уведомлений сервиса Lets Encrypt (можно указать несуществующий, например, webmaster@yourdomain.ru), подтвердить ввод данных.
 Далее указываем нужный нам сайт (можно указать несколько сайтов через запятую), его dns имя (совпадает с именем домена), технический email для уведомлений сервиса Lets Encrypt (можно указать несуществующий, например, webmaster@yourdomain.ru), подтвердить ввод данных.
После этого задача попадает в список фоновых и начинает выполняться. Примерно через 1-2 минуты всё будет готово. Система сгенерирует все необходимые данные и настроит автообновление сертификата Let's Encrypt. От вас больше никаких действий не потребуется.
С версии BitrixVM 7.4.0 проверка сертификатов автоматически производится еженедельно в субботу в 2 часа ночи по cron-у.
Если вам нужно вручную обновить сертификат, запустите его получение для существующего домена. Система проверит и при необходимости обновит сертификаты.
Также вы можете вручную командой:
/home/bitrix/dehydrated/dehydrated -c
Система проверит сроки действия и при необходимости запустит обновление.
Лог обновления можно посмотреть по пути: /home/bitrix/dehydrated_update.log.
Если вдруг не отрабатывает обновление сертификата, то можете в crontab под root добавить команду
0 3 * * 0 /home/bitrix/dehydrated/dehydrated -c >> /var/log/dehydrated.log && systemctl reload nginx.serviceКаждое воскресенье в 3 часа ночи будет осуществляться проверка срока действия сертификата и его перевыпуск при необходимости, после чего произойдет перезапуск nginx.
Подключение платного сертификата
Тут есть несколько вариантов, в зависимости от того, в каком виде приходит сертификат от вендора.
1. Если у нас есть у нас есть 3 файла:
- certificate.key,
- certificate.crt,
- certificate.ca-bundle
То установка довольно простая.
- Заходим на сервер по SFTP и переходим в папку /etc/nginx
- Если внутри нет папки certs, то создаем ее и загружаем туда наши три файла сертификата
- Подключаемся к серверу по SSH под root, откроется виртуальная машина
- Переходим в раздел 8. Manage pool web servers -> 3. Configure certificates -> 2. Configure own certificate
- Указываем сайт для которого ставим сертификат (для основного сайта это будет default, для остальных - доменное имя сайта)
- Далее указываем пути к сертификатам. Так как у нас файлы загружены в /etc/nginx/certs то достаточно указать только имена соответствующих файлов
- После этого сформируется фоновое задание, которое в течение 1-2 минут будет выполнено
2. Если у нас нет этих 3 файлов
1. Для начала нам необходимо создать файл .crt, в котором будет цепочка сертификатов (корневой и промежуточные). Некоторые вендоры могут присылать уже собранный файл. После вставки всех данных вид файла будет таким:
-----BEGIN CERTIFICATE-----
#Ваш сертификат#
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
#Промежуточный сертификат#
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
#Корневой сертификат#
-----END CERTIFICATE-----Важно! Файл должен быть в кодировке UTF-8, без BOM, иначе при проверке конфигурации будет ошибка
2. Теперь нам надо собрать файл .key с секцией:
-----BEGIN RSA PRIVATE KEY-----
Тут ваш приватный ключ
-----END RSA PRIVATE KEY-----Важно! Файл должен быть в кодировке UTF-8, без BOM, иначе при проверке конфигурации будет ошибка
3. Загружаем файлы в папку /etc/nginx/ssl/
4. Далее редактируем файл /etc/nginx/bx/site_avaliable/s1.ssl.conf (для основного сайта) или /etc/nginx/bx/site_avaliable/bx_ext_ssl_название_хоста.conf (для дополнительных сайтов). В нем вносим корректировки в параметры ssl_sertificate и ssl_sertificate_key:
ssl_certificate	/etc/nginx/ssl/domain.ru.crt;
ssl_certificate_key /etc/nginx/ssl/domain.ru.key;Получится примерно так:
 5. После сохранения файла переходим в консоль (терминал) SSH и выходим из меню виртуальной машины (в главном меню bitrixvm выбираем  0. Exit.
5. После сохранения файла переходим в консоль (терминал) SSH и выходим из меню виртуальной машины (в главном меню bitrixvm выбираем  0. Exit.
6. Запускаем проверку конфигурации nginx с помощью команды
nginx -tЕсли всё пройдет хорошо, то вы увидите примерно такой ответ:
 Если возникнут ошибки, то они здесь будут отражены. Возможные ошибки:
 Если возникнут ошибки, то они здесь будут отражены. Возможные ошибки:
- система не видит файлы - проверьте пути
- ошибка конфигурации - убедитесь, что все файлы: .crt, .key, .conf сохранены в UTF-8 без BOM
7. Финальное действие - перезапускаем nginx
systemctl restart nginx.serviceПосле подключения настраиваем 301 редирект!
После подключения сертификата необходимо корректно настроить 301 редирект.
В виртуальной машине переходим: 6. Manage sites in the pool -> 5. Change https settings on site вводим нужный сайт и отключаем для него HTTP доступ.
После этого корректируем htaccess файл в корне сайта, чтобы все редиректы соответствовали требованиям SEO.
Важные особенности из практики работы с Let's Encrypt на Битрикс:
1. Возвращается ошибка выпуска сертификата
 1.1. Мы сталкивались с ситуацией, когда домен без www и с www выдавал ошибку. Оказалось, что для www домена в DNS редакторе не было A записи. Решилось установкой A записи для соответствующего домена
1.1. Мы сталкивались с ситуацией, когда домен без www и с www выдавал ошибку. Оказалось, что для www домена в DNS редакторе не было A записи. Решилось установкой A записи для соответствующего домена
1.2. Ошибка проверки домена через запрет доступа к .well-known/acme-challenge/ Проявляется примерно так urn:acme:error:unauthorized:
 Проблема решилась обновлением BitrixVM, на сервере была устаревшая версия виртуальной машины
Проблема решилась обновлением BitrixVM, на сервере была устаревшая версия виртуальной машины
2. Как выпустить let's encrypt сертификат на несколько поддоменов в рамках многосайтовости
При выпуске сертификата в BitrixVM на шаге указания доменов необходимо перечислить основной домен и все его поддомены с www и без www. Тогда выпустится единый сертификат, который будет действовать на все указанные домены / поддомены.
Больше полезных материалов в нашем Telegram канале. Вступайте и будем на связи! https://t.me/bf_conversion


