Certbot генерирует сертификаты Let's Encrypt и умеет их автопродлять. Начнем с установки данной самой главной утилиты (Пишу для актуальной в настоящий момент для битрикса Centos 9, но смысл общий понятен).
Команды надо выполнять из-под root’а:
sudo dnf update -y sudo dnf install epel-release -y sudo dnf install certbot -y
После запускаем утилиту следующим образом:
certbot --nginx
При первом запуске надо принять пользовательское соглашение и заполнить контактные данные.
Затем утилита certbot --nginx сканирует конфигурацию nginx, выполняет поиск всех хостов (сайтов, доменов) и показывает интерфейс выбора, для каких именно необходимо сгенерировать сертификат.
Дальше, для автоматического продления сертификатов Let's Encrypt на BitrixOS необходимо добавить соответствующее задание в crontab:
crontab -e
30 6 * * * certbot renew --post-hook "systemctl reload nginx"
Согласно данному заданию, ежедневно в 6:30 будет проверяться, нужно ли обновить сертификат.
Update 2024-03-10: Расширение списка доменов для сертификата
Начиная с certbot версии 0.34.0, можно расширить список доменов, для которых будет действовать ранее выпущенный сертификат.
Для начала проверим, какие домены уже включены в сертификат:
sudo certbot certificates
Эта команда возвратит имя вашего сертификата и содержащиеся в нём домены:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs: Certificate Name: foo.example.com
Domains: foo.example.com bar.example.com
Expiry Date: 2019-08-01 11:30:32+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/foo.example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/foo.example.com/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Для изменения списка доменов, необходимо перечислить все! домены (и прописанные ранее, и те, которые нужно добавить) через запятую:
sudo certbot --expand -d foo.example.com,bar.example.com,baz.example.com
В результате выполнения данной команды, список доменов будет расширен.
Update 2024-04-15: Удаление лишних доменов для сертификата
В документации certbot описано 2 шага для удаления сертификата:
- удаляет информацию с серверов letsenrypt
certbot revoke --cert-path /etc/letsencrypt/live/CERTNAME/cert.pem
-
удаляет сертификаты и все симлинки на локальном сервере
certbot delete --cert-name example.com
Таким образом, для удаления домена из автообновлений сертификата, нужно выполнить команду:
certbot delete --cert-name example.com
Но можно сделать еще лучше:
sudo certbot delete
Данная команда выведет список имеющихся доменов для выбора того, какой из них нужно удалить. Выбираем нужный и готово.
