Статья является обновлением старой статьи.
Хочу обратить внимание, что все работы вы проводите на свой страх и риск. Так как официально такой хук не поддерживается.
Настройки будет производить для сервера по адресу – pbx.asadagar.ru. Так что не забываем менять FQDN на свой.
Погнали:
- Подключаемся к серверу по SSH.
- Устанавливаем Cerbot (в этот раз без snap):
apt update
apt install certbot
Подаем заявку на выпуск сертификата (не забываем изменить домен на свой проверить что порт 80(http) открыт):
certbot certonly --standalone -d pbx.asadagar.ru
Дальше есть два пути:
- Подменять старые сертификаты на новые (мой вариант)
- Править стандартный конфиг nginx (не мой вариант, так как после обновления 3cx конфиг может слететь).
Вариант 1
Нужно создать скрипт для перемещения и переименовывания сертификатов, а так же для выправления прав и автоматический перезапуск службы:
mkdir /scripts
cd /scrips/
sudo nano autoupdater_certbot_3cx.s
Вставляем следующий скрипт и не забываем изменить его под свой FQDN:
#!/bin/bash
mv /var/lib/3cxpbx/Bin/nginx/conf/Instance1/domain_cert_pbx.asadagar.ru.pem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/domain_cert_pbx.asadagar.ru.pem.old
mv /var/lib/3cxpbx/Bin/nginx/conf/Instance1/domain_key_pbx.asadagar.ru.pem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/pdomain_key_pbx.asadagar.ru.pem.old
cp /etc/letsencrypt/live/pbx.asadagar.ru/fullchain.pem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/domain_cert_pbx.asadagar.ru.pem
cp /etc/letsencrypt/live/pbx.asadagar.ru/privkey.pem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/domain_key_pbx.asadagar.ru.pem
chown phonesystem:phonesystem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/domain_cert_pbx.asadagar.ru.pem
chown phonesystem:phonesystem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/domain_key_pbx.asadagar.ru.pem
chmod 644 /var/lib/3cxpbx/Bin/nginx/conf/Instance1/domain_cert_pbx.asadagar.ru.pem
chmod 640 /var/lib/3cxpbx/Bin/nginx/conf/Instance1/domain_key_pbx.asadagar.ru.pem
systemctl reload nginx.service
Делаем скрипт исполняемым:
sudo chmod +x autoupdater_certbot_3cx.sh
Данный скрипт должен запускаться автоматически после каждого обновления сертификата Let’s Encrypt. Для этого мы используем хук для certbot который в случае удачного получения сертификата запустит наш скрипт.
Открываем файл:
nano /etc/letsencrypt/renewal/pbx.asadagar.ru.conf
И в конце конфигурации добавляем строку:
deploy_hook = /scripts/autoupdater_certbot_3cx.sh
Тестируем получение сертификата:
certbot renew --force-renewal
Всё. Проверяем. Пользуемся.
Вариант 2
Этот вариант мне нравится меньше, по одной простой причине — при обновлении 3CX конфиг перезапишется и его нужно будет заново править.
Открываем конфигурацию nginx:
nano /etc/nginx/sites-enabled/3cxpbx
И меняем путь у параметров ssl_certificate и ssl_certificate_key на путь certbot:
/var/lib/3cxpbx/Bin/nginx/conf/Instance1/ => /etc/letsencrypt/live/pbx.asadagar.ru/
ssl_certificate "/etc/letsencrypt/live/pbx.asadagar.ru/cert.pem";
ssl_certificate_key "/etc/letsencrypt/live/pbx.asadagar.ru/privkey.pem";
Так как после каждого получения новых сертификатов нужно перезапускать службу, то для этого мы будем использовать хук для certbot.
Открываем файл:
nano /etc/letsencrypt/renewal/pbx.asadagar.ru.conf
И в конце конфигурации добавляем следующую строку:
deploy_hook = systemctl reload nginx.service
Всё. Проверяем. Пользуемся.