Безкоштовний сертифікат Let's Encrypt
Як випустити й автоматично поновлювати HTTPS-сертифікат на VPS за допомогою certbot, зокрема у випадку, коли порт 80 вже зайнятий.
Оновлено 23 серпня 2026 р.
Вам потрібен сертифікат, щоб браузер не показував «Не захищено», а форми й платежі взагалі працювали. Let's Encrypt видає його безкоштовно на 90 днів з автоматичним поновленням.
Підготовка
Перевірте три речі, інакше видача не вдасться:
dig +short example.ru # should return your machine's address
ss -tulpn | grep -E ':80|:443'
- A-запис домену вказує на адресу на вкладці «Огляд» панелі за шляхом
/hosting/vds/m/<id>; - порт 80 доступний ззовні — Let's Encrypt використовує його для підтвердження володіння доменом;
- вебсервер запущено: Nginx або Apache.
Якщо ви використовуєте Caddy, робити нічого не потрібно — він видає сертифікати самостійно.
Видача
apt install -y certbot python3-certbot-nginx # Debian, Ubuntu
dnf install -y certbot python3-certbot-nginx # AlmaLinux, CentOS Stream
certbot --nginx -d example.ru -d www.example.ru
Для Apache це той самий шлях із python3-certbot-apache і прапорцем --apache. Certbot сам додає до конфігурації блок сертифіката та перенаправлення з HTTP на HTTPS.
Перевірте результат:
certbot certificates
curl -I https://example.ru
Автоматичне поновлення
Пакет встановлює системний таймер, який також відповідає за поновлення. Переконайтеся, що таймер активний, і запустіть тестове поновлення:
systemctl list-timers | grep certbot
certbot renew --dry-run
Пробний запуск обов'язковий. Він виявляє ситуацію, коли поновлення зламається через два місяці — наприклад, ви перейменували конфігурацію сайту й certbot більше не знає, куди покласти файл перевірки.
Коли порт 80 зайнятий
Якщо на порту 80 працює застосунок і ви не можете поставити туди вебсервер, скористайтеся окремим режимом:
certbot certonly --standalone --preferred-challenges http -d example.ru
Certbot на час перевірки підніме власний тимчасовий сервер. Для цього доведеться зупинити застосунок: --pre-hook і --post-hook можуть зробити це автоматично.
Після видачі сертифікати лежать у /etc/letsencrypt/live/example.ru/: fullchain.pem і privkey.pem.
Типові помилки
| Симптом | Причина |
|---|---|
Timeout during connect | Порт 80 заблокований фаєрволом або домен вказує на іншу машину |
too many certificates already issued | Ви вичерпали тижневий ліміт для домену — зачекайте або налагоджуйте з --staging |
| Сайт віддає старий сертифікат після видачі | Ви не перезавантажили вебсервер: systemctl reload nginx |
| Сертифікат прострочився | Таймер вимкнено — перевірте systemctl enable --now certbot.timer |
Каталог
/etc/letsencrypt— частина ваших даних. Автоматичних резервних копій машини немає, тож додайте його до своєї резервної копії разом із конфігураціями вебсервера.