Блог

Інструкції, посібники й новини про продукт.

Безпека та резервні копії

Безплатні сертифікати HTTPS від Let's Encrypt

2 листопада 2026 5 хв читання
Поділитися записом

Let's Encrypt — центр сертифікації, що випускає безплатні сертифікати HTTPS для вашого домену. На VPS сертифікат можна отримати кількома командами через Certbot або взагалі без команд через Caddy, і обидва поновлюють його самі. Є дві вимоги: домен має вказувати на IP-адресу вашого сервера, а порти 80 і 443 мають бути відкриті ззовні.

Навіщо потрібен HTTPS?

HTTPS шифрує трафік між браузером і сервером. Треті особи в мережі не можуть прочитати пароль у формі входу чи дані замовлення. На сайтах без HTTPS браузери можуть показувати попередження «не захищено». Сертифікат Let's Encrypt безплатний, тож вагомих причин відмовлятися від HTTPS не лишилося.

Перш ніж почати

  • Запис A домену має показувати IP-адресу вашого сервера. Щоб перевірити, виконайте dig +short example.com. У виводі має бути IP-адреса вашого сервера.
  • Порти 80 і 443 мають бути відкриті, бо перевірка відбувається на порту 80 (HTTP-01). Якщо користуєтеся ufw, виконайте sudo ufw allow 80/tcp і sudo ufw allow 443/tcp. Якщо у сервера є окремий брандмауер у панелі, перевірте правила й там.
  • Якщо в домену є запис AAAA (IPv6), він теж має вказувати на цей сервер. Якщо ні, видаліть запис.
  • Ваш вебсервер має працювати й знати цей домен.

Встановлення та перевірка Certbot на Nginx або Apache

В офіційних інструкціях Certbot радять пакет snap. Переконайтеся, що на сервері встановлено snapd (в Ubuntu він зазвичай є), і видаліть старіший Certbot, встановлений через apt.

  1. Встановіть Certbot: sudo snap install --classic certbot
  2. Зробіть команду доступною всюди: sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
  3. Отримайте сертифікат і встановіть його у вебсервер. Виконайте sudo certbot --nginx для Nginx або sudo certbot --apache для Apache.
  4. Дайте відповіді на запитання: ваша адреса електронної пошти, для яких доменів потрібен сертифікат і чи перенаправляти HTTP на HTTPS.
  5. Спробуйте поновлення: sudo certbot renew --dry-run

Якщо ви хочете лише отримати сертифікат і налаштувати все самі, виконайте sudo certbot certonly --nginx. Пакет Certbot сам додає заплановане завдання (cron або таймер systemd), і його видно у виводі systemctl list-timers. Команда sudo certbot certificates перелічує ваші сертифікати та дати їх закінчення. Certbot поновлює сертифікат, коли його строк добігає кінця, і вам нічого робити не треба. Проте поновлення колись може не вдатися (наприклад, через правило брандмауера), тож час від часу виконуйте --dry-run.

Щоб перевірити сертифікат, спершу подивіться на значок замка в адресному рядку браузера. Щоб побачити дату закінчення командою, виконайте:

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates

Рядок notAfter у виводі — це дата закінчення сертифіката. Якщо ви не користуєтеся перенаправленням, яке додає Certbot, перенаправте HTTP на HTTPS самі. У Nginx додайте рядок return 301 https://$host$request_uri; у блок server, що слухає порт 80.

З Caddy і без команд

Якщо ви користуєтеся Caddy, нічого додатково встановлювати не треба. Для домену в його конфігурації Caddy отримує сертифікат від Let's Encrypt або ZeroSSL, поновлює його і перенаправляє HTTP на HTTPS. За офіційною документацією, записи A і AAAA домену мають вказувати на сервер, порти 80 і 443 мають бути досяжні ззовні, а тека даних Caddy має бути постійною та доступною для запису. Якщо запускаєте Caddy у Docker, змонтуйте цю теку на томі. Інакше сертифікати зникнуть разом із видаленням контейнера, а повторний запит на них може впертися в ліміт.

Універсальні сертифікати (wildcard)

Універсальний сертифікат (*.example.com) охоплює всі піддомени одним сертифікатом, і отримати його можна лише з перевіркою DNS-01. Ця перевірка не використовує порт 80. Вона просить додати запис TXT у DNS вашого домену. Для цього вашому DNS-провайдеру потрібен API, а ключ API ви зберігаєте на сервері. У документації Let's Encrypt зберігання таких ключів на вебсервері названо ризикованим. Якщо універсальний сертифікат вам не потрібен, простіше отримувати сертифікати для окремих доменів через HTTP-01, і зберігати ключ DNS не доведеться.

Типові помилки

СимптомІмовірна причинаРішення
Перевірка не проходить, домен не знайденоЗапис A вказує на неправильну IP-адресу або ще не поширивсяПеревірте IP-адресу командою dig +short example.com і зачекайте
Тайм-аутПорт 80 закритийВідкрийте 80 в ufw і в брандмауері панелі, якщо він у вас є
Перевірка іноді проходить, а іноді ніЗапис AAAA вказує на інший серверВиправте або видаліть запис AAAA
Помилка ліміту запитівЗабагато спробДля тестів використовуйте --dry-run, а ліміти дивіться на офіційній сторінці
Поновлення не запускаєтьсяНемає запланованого завдання, або вебсервер блокує порт 80sudo certbot renew --dry-run показує помилку

У повідомленні про помилку зазвичай сказано, яка перевірка не пройшла і до якої адреси на вашому сервері намагався дістатися Let's Encrypt. Читайте повідомлення як є. Відповідь часто просто там.

За офіційною сторінкою Let's Encrypt, діє ліміт 5 сертифікатів на тиждень для того самого набору доменних імен і 5 невдалих перевірок на годину для того самого доменного імені. Тож під час експериментів користуйтеся --dry-run. Він пробує поновлення в тестовому середовищі й не витрачає ваш справжній ліміт.

У готових застосунках Seturack

Готові застосунки (WordPress, Nextcloud та інші) відкриваються через HTTPS на адресі sslip.io, утвореній із вашої IP-адреси, тож доменне ім’я не потрібне. Коли ви підключаєте власний домен, Caddy отримує сертифікат знову, і додатково нічого встановлювати не треба. Кроки, як повідомити про домен Caddy і застосунку, наведено в цій довідковій статті.

Коментарі0

Коментарів поки немає

Поділіться своєю думкою першим.

Долучайтеся до обговорення

Будь ласка, увійдіть або зареєструйтеся, щоб залишити коментар.

Не пропускайте нові записи

Отримуйте наші свіжі інструкції, посібники та новини продукту на пошту.

Ви підписалися на нашу розсилку.