Получение сертификата Let’s Encrypt через DNS-валидацию
В данной статье мы рассмотрим как получить сертификат Lets Encrypt через DNS. Получение сертификата Let’s Encrypt с использованием валидации через DNS (DNS-01) подходит, если вы хотите подтвердить право на управление доменом, добавляя специальную запись в DNS. Этот способ удобен, когда нет доступа к серверу или нужно получить сертификат для поддоменов, недоступных через HTTP. Далее описан процесс пошагово, в котором мы используем примеры на основе дистрибутива Debian
Установите certbot
Для начала проверьте, установлен ли certbot
. Если нет, выполните установку. На большинстве систем Linux это делается так:
sudo apt update
sudo apt install certbot
Установите плагин для автоматизации DNS
Для некоторых DNS-провайдеров существуют плагины, которые позволяют автоматически добавлять записи в DNS.
Примеры:
- Cloudflare:
python3-certbot-dns-cloudflare
- DigitalOcean:
python3-certbot-dns-digitalocean
- Route 53:
python3-certbot-dns-route53
Установите подходящий плагин. Например, для Cloudflare:
sudo apt install python3-certbot-dns-cloudflare
Настройте доступ к API (при использовании автоматизации)
Если вы собираетесь применять плагин, создайте API-токен или ключ у вашего DNS-провайдера. Убедитесь, что у токена есть права на управление DNS.
Сохраните токен в файле, например:
echo "dns_cloudflare_api_token=ВАШ_API_ТОКЕН" > ~/.secrets/cloudflare.ini
chmod 600 ~/.secrets/cloudflare.ini
Получение сертификата с помощью certbot
Для автоматизированной работы с DNS-плагином выполните:
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/cloudflare.ini -d some-site.ru -d "*.some-site.ru"
В этом примере запрос идет на сертификат для some-site.ru и всех его поддоменов.
Ручной режим добавления DNS-записей
Если для вашего DNS-провайдера плагина нет, используйте ручной способ:
1. Запустите certbot
с параметром --manual
:
sudo certbot certonly --manual --preferred-challenges dns -d some-site.ru -d "*.some-site.ru"
2. Программа покажет ключ для добавления в виде TXT-записи в DNS, например:
_acme-challenge.some-site.ru IN TXT "ключ_валидации"
3. В панели управления DNS добавьте эту запись.
4. После обновления DNS (обычно это занимает несколько минут), проверьте наличие записи:
nslookup -type=TXT _acme-challenge.some-site.ru
5. Вернитесь в терминал и нажмите Enter, чтобы завершить процесс.
Проверка сертификата
После успешного выполнения сертификаты будут доступны в каталоге /etc/letsencrypt/live/some-site.ru/
.
Настройка обновления
Чтобы автоматизировать обновление сертификатов, настройте задачу в cron.
- Если вы используете DNS-плагин:
0 0 * * * certbot renew --quiet
- Для ручного метода процесс обновления потребует повторного добавления TXT-записей.
Следуя этим шагам, вы сможете получить сертификаты Lets Encrypt через DNS валидацию и применять их для своих доменов.