Настройка 3CX 20 для автоматического обновления сертификата Let’s Encrypt через Certbot

Статья является обновлением старой статьи.

Хочу обратить внимание, что все работы вы проводите на свой страх и риск. Так как официально такой хук не поддерживается.

Настройки будет производить для сервера по адресу – pbx.asadagar.ru. Так что не забываем менять FQDN на свой.

Погнали:

  • Подключаемся к серверу по SSH.
  • Устанавливаем Cerbot (в этот раз без snap):
Bash
apt update
apt install certbot

Подаем заявку на выпуск сертификата (не забываем изменить домен на свой проверить что порт 80(http) открыт):

Bash
certbot certonly --standalone -d pbx.asadagar.ru

Дальше есть два пути:

  1. Подменять старые сертификаты на новые (мой вариант)
  2. Править стандартный конфиг nginx (не мой вариант, так как после обновления 3cx конфиг может слететь).

Вариант 1

Нужно создать скрипт для перемещения и переименовывания сертификатов, а так же для выправления прав и автоматический перезапуск службы:

Bash
mkdir /scripts
cd /scrips/
sudo nano autoupdater_certbot_3cx.s

Вставляем следующий скрипт и не забываем изменить его под свой FQDN:

Bash
#!/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

Делаем скрипт исполняемым:

Bash
sudo chmod +x autoupdater_certbot_3cx.sh

Данный скрипт должен запускаться автоматически после каждого обновления сертификата Let’s Encrypt. Для этого мы используем хук для certbot который в случае удачного получения сертификата запустит наш скрипт.

Открываем файл:

Bash
nano /etc/letsencrypt/renewal/pbx.asadagar.ru.conf

И в конце конфигурации добавляем строку:

Bash
deploy_hook = /scripts/autoupdater_certbot_3cx.sh

Тестируем получение сертификата:

Bash
certbot renew --force-renewal

Всё. Проверяем. Пользуемся.

Вариант 2

Этот вариант мне нравится меньше, по одной простой причине — при обновлении 3CX конфиг перезапишется и его нужно будет заново править.

Открываем конфигурацию nginx:

Bash
nano /etc/nginx/sites-enabled/3cxpbx

И меняем путь у параметров ssl_certificate и ssl_certificate_key на путь certbot:

Bash
/var/lib/3cxpbx/Bin/nginx/conf/Instance1/  => /etc/letsencrypt/live/pbx.asadagar.ru/
Bash
ssl_certificate      "/etc/letsencrypt/live/pbx.asadagar.ru/cert.pem";
ssl_certificate_key  "/etc/letsencrypt/live/pbx.asadagar.ru/privkey.pem";

Так как после каждого получения новых сертификатов нужно перезапускать службу, то для этого мы будем использовать хук для certbot.

Открываем файл:

Bash
nano /etc/letsencrypt/renewal/pbx.asadagar.ru.conf

И в конце конфигурации добавляем следующую строку:

Bash
deploy_hook = systemctl reload nginx.service

Всё. Проверяем. Пользуемся.

Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии