Генерация и подключение бесплатного 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), подтвердить ввод данных.
После этого задача попадает в список фоновых и начинает выполняться. Примерно через 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.
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.2. Ошибка проверки домена через запрет доступа к .well-known/acme-challenge/ Проявляется примерно так urn:acme:error:unauthorized:
Проблема решилась обновлением BitrixVM, на сервере была устаревшая версия виртуальной машины
2. Как выпустить let's encrypt сертификат на несколько поддоменов в рамках многосайтовости
При выпуске сертификата в BitrixVM на шаге указания доменов необходимо перечислить основной домен и все его поддомены с www и без www. Тогда выпустится единый сертификат, который будет действовать на все указанные домены / поддомены.
Больше полезных материалов в нашем Telegram канале. Вступайте и будем на связи! https://t.me/bf_conversion