Пошаговая инструкция
Шаг 1. Удалите файл блокировки (если есть)
bash
sudo rm -f /var/log/letsencrypt/.certbot.lock
Шаг 2. Запустите certbot с sudo
bash
sudo certbot certonly --manual --preferred-challenges dns -d example.com -d www.example.com --staging
--staging можно оставить для тестирования (лимиты мягче);
После успешного теста уберите --staging для реального сертификата.
Если хотите выпустить реальный сертификат, сначала удалите тестовый:
bash
sudo certbot delete --cert-name example.com
Подтвердите удаление, когда certbot запросит подтверждение.
Шаг 3. Получите TXT‑записи от certbot
После запуска certbot выведет два значения:
- для _acme-challenge.example.com;
- для _acme-challenge.www.example.com.
Скопируйте оба значения.
Шаг 4. Добавьте TXT‑записи в DNS
В панели управления DNS создайте две TXT‑записи:
| Запись | Name/Host | Value/Text |
|---|---|---|
| Для основного домена | _acme-challenge.example.com | xxxxxx (из вывода certbot) |
| Для www‑поддомена | _acme-challenge.www.example.com | yyyyyy (из вывода certbot) |
TTL: 3600 секунд. Сохраните записи.
Шаг 5. Проверьте распространение DNS
Дождитесь, пока записи распространятся:
bash
dig TXT _acme-challenge.example.com +short
dig TXT _acme-challenge.www.example.com +short
Обе команды должны вывести соответствующие значения TXT‑записей. Если нет — подождите 5–10 минут и проверьте снова.
Иногда dig долго показывает старое значение. Тогда проверьте через разные DNS‑серверы. Это поможет определить, проблема локальная или глобальная:
bash
# Через Google DNS
dig TXT _acme-challenge.example.com @8.8.8.8 +short
dig TXT _acme-challenge.www.example.com @8.8.8.8 +short
# Через Cloudflare DNS
dig TXT _acme-challenge.example.com @1.1.1.1 +short
dig TXT _acme-challenge.www.example.com @1.1.1.1 +short
Если на публичных DNS запись есть, а локально — нет, проблема в кэше. Обычно можно игнорировать и сразу продолжить процедуру.
Шаг 6. Завершите выпуск сертификата
После того как dig покажет обе записи, вернитесь в терминал с certbot и нажмите Enter (не Ctrl+C!). certbot проверит валидацию и выдаст сертификат.
Шаг 7. Проверьте результат
Убедитесь, что сертификат создан и содержит оба домена:
bash
openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -text -noout | grep DNS
В выводе должны быть:
- DNS:example.com;
- DNS:www.example.com.