Шаг 1. Установка Certbot
В Debian 12 ставим Certbot через snap, чтобы всегда иметь актуальную версию:
sudo apt update
sudo apt install snapd -y
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
Обновляем пути в текущей сессии:
source /etc/profile
Удаляем старую apt-версию (если была) и ставим snap:
sudo apt remove certbot -y
sudo snap install core && sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Шаг 2. Получение сертификата
Выберите команду под свою конфигурацию:
- Если работает Nginx:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
- Если Nginx не используется (standalone-режим, нужен свободный 80 порт):
sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
Шаг 3. Создание скрипта перезапуска сервисов
Когда Let's Encrypt обновляет сертификат, службы продолжают держать старый ключ в памяти. Чтобы они подхватили новый SSL, создаём скрипт перезапуска:
sudo nano /usr/local/bin/restart_services.sh
Вставляем команды перезапуска ваших служб (закомментируйте или уберите nginx, если он не используется):
#!/bin/bash
systemctl reload nginx
systemctl restart x-ui
systemctl restart torrserver.service
Делаем скрипт исполняемым:
sudo chmod +x /usr/local/bin/restart_services.sh
Шаг 4. Настройка автозапуска скрипта в systemd
Чтобы скрипт вызывался автоматически после каждого продления сертификата, добавим хук в сервис Certbot.
- Открываем файл переопределения (в зависимости от того, какой сервис у вас в системе –
certbot.serviceилиsnap.certbot.renew.service):
Проверяем имя сервиса в вашей системе:
systemctl list-unit-files | grep certbot
sudo systemctl edit certbot.service
- Вставляем блок:
[Service]
ExecStartPost=/usr/local/bin/restart_services.sh
SuccessExitStatus=1
(Параметр SuccessExitStatus=1 нужен, чтобы systemd не считал работу службы ошибкой, если сертификат ещё не требовал продления).
- Сохраняем
(Ctrl + O, затем Enter)и закрываем (Ctrl + X). - Применяем настройки:
sudo systemctl daemon-reload
Шаг 5. Проверка работы
- Проверяем связь с Let's Encrypt:
sudo certbot renew --dry-run
В конце должно быть: Congratulations, all simulated renewals succeeded.
- Проверяем работу самого хука и скрипта:
sudo systemctl start certbot.service
systemctl status certbot.service
В статусе должна быть строчка:
ExecStartPost=/usr/local/bin/restart_services.sh (code=exited, status=0/SUCCESS)
Всё настроено! Сертификаты будут продлеваться сами, а нужные службы – перезапускаться без вашего участия.
Диагностика SSL-сертификата
Узнать даты действия сертификата:
echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates
Проверить, кто выпустил сертификат и для какого домена:
echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -issuer -subject
Проверить локальный порт службы (например, TorrServer на 8085):
echo | openssl s_client -connect 127.0.0.1:8085 2>/dev/null | openssl x509 -noout -issuer -subject
Онлайн-сервисы
- SSL Labs – углублённый аудит шифрования и цепочки сертификатов.
- SSL Shopper – быстрая проверка валидности и срока окончания.