Всем привет!
Однажды администратор одного из внутренних сайтов предприятия попросил прописать TXT запись для получения Let's Encrypt сертификата, поскольку сайт не доступен снаружи и, нет возможности настроить проверку HTTP-01. Через три месяца попросил прописать еще раз, для продления, потом появился второй такой сайт, и, стало очевидно, что процесс пора автоматизировать. Уже перед публикацией нашлась отличная статья с полезными комментариями, автору понадобилась та же проверка DNS-01 и стандарт RFC 2136 для автоматизации выпуска wildcard сертификата
Так, что, предлагаю краткую “шпаргалку с заменой по Ctrl+H”, для тех, кто использует сервер DNS сервер bind и хочет делегировать выпуск/проверку Let`s Encrypt сертификатов для внутренних сайтов сторонним подразделениям.

Инструкция для администратора DNS сервера:
Назначьте IP адрес для очередного внутреннего сайта и опишите зону, для будущей DNS-01 проверки с единственным DNS сервером (не забудьте увеличить номер версии зоны:)
dns# nano /etc/bind/yourdomain.ru
...
anysiteN A A.B.C.D
*.anysiteN CNAME anysiteN
_acme-challenge.anysiteN NS ns
...
Создайте файл ключа с соответствующим именем, назначьте права и добавьте его к конфигурации DNS сервера
dns# rndc-confgen -a -A hmac-sha512 -k "certbot.anysiteN" -c /etc/bind/certbot.anysiteN.key
dns# chmod 640 /etc/bind/certbot.anysiteN.key
dns# nano /etc/bind/named.conf
...
include "/etc/bind/certbot.anysiteN.key";
...
Создайте минимальный файл зоны, в каталоге и, с правами, которые, в дальнейшем, позволят редактировать его через сервис named
dns# sudo -u bind nano /var/lib/bind/_acme-challenge.anysiteN.yourdomain.ru
$TTL 1h
_acme-challenge.anysiteN.yourdomain.ru. IN SOA ns.yourdomain.ru. noc.yourdomain.ru. 1 1d 12h 1w 1h
NS ns.yourdomain.ru.
Добавьте поддержку зоны в настройки DNS сервера, и укажите права на добавление в нее TXT записей для созданного ключа
dns# nano /etc/bind/named.conf.local
...
zone "_acme-challenge.anysiteN.yourdomain.ru" {
type master;
file "/var/lib/bind/_acme-challenge.anysiteN.yourdomain.ru";
update-policy {
grant certbot.anysiteN name _acme-challenge.anysiteN.yourdomain.ru. TXT;
};
};
...
Протестируйте и обновите конфигурацию
dns# named-checkconf -z
dns# rndc reload
Для первого сайта стоит провести Проверки работоспособности
Процесс выпуcка/обновления сертификатов будет сопровождаться появлением в журнале записей вида:
dns# journalctl | grep -i _acme-challenge.anysiteN
...
Dec 22 12:48:40 ns named[213146]: client @0x7f47161dac98 195.19.40.42#45142/key certbot.anysite: view dmz: updating zone '_acme-challenge.anysiteN.yourdomain.ru/IN': adding an RR at '_acme-challenge.anysiteN.yourdomain.ru' TXT "JikZ0ZHCUv4Bdk5AQ7DimCHAf46xeBAOOEu_-PPbH2U"
Dec 22 12:49:44 ns named[213146]: client @0x7f4711727c98 195.19.40.42#33991/key certbot.anysite: view dmz: updating zone '_acme-challenge.anysiteN.yourdomain.ru/IN': deleting an RR at _acme-challenge.anysiteN.yourdomain.ru TXT
...
Если все работает, извлекаем имя и значение ключа из файла
dns# less /etc/bind/certbot.anysiteN.key
и “подставляем” в инструкцию для администратора сайта
Инструкция для администратора сайта:
1. Установите плагин certbot-dns, в debian/ubuntu делается так:
anysiteN# apt install python3-certbot-dns-rfc2136
2. Создайте файл конфигурации с таким содержимым:
anysiteN# nano /etc/certbot-credentials.ini
dns_rfc2136_server = 172.19.32.2
dns_rfc2136_port = 53
dns_rfc2136_name = certbot.anysiteN
dns_rfc2136_secret = d+P0fg32FsGV0CYOTmWBkQLjG4KnUNNNNNNNNNNNNNNNNNNNNNNNNNNNNN9QF5pzH+MpbYqGa1WB/yh1Q==
dns_rfc2136_algorithm = HMAC-SHA512
3. Назначьте права доступа к нему:
anysiteN# chmod 640 /etc/certbot-credentials.ini
4. Запросите сертификаты и убедитесь в их создании
anysiteN# certbot certonly --dns-rfc2136 --dns-rfc2136-credentials /etc/certbot-credentials.ini -d 'anysiteN.yourdomain.ru' -d '*.anysiteN.yourdomain.ru'
...
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/anysiteN.yourdomain.ru/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/anysiteN.yourdomain.ru/privkey.pem
6. Для автоматического продления убедитесь в создании файла конфигурации и наличии таймеров и сервисов
anysiteN:~# cat /etc/letsencrypt/renewal/anysiteN.yourdomain.ru.conf
anysiteN# systemctl status certbot.timer
...
Active: active (waiting) ...
...
anysiteN# systemctl show certbot.service
...
TriggeredBy: ● certbot.timer
...
На этом все, но, если хотите посмотреть с самого начала, что такое сертификаты Let's Encrypt и как с ними работать, приглашаю посмотреть мой вебинар: "Все, что нужно знать про Let's Encrypt: от localhost до Kubernetes"
Спасибо!
Комментарии (10)

dimsoft
20.01.2026 07:15Если сайт внутрений, то у него и имя .local - как тогда быть ?

valvalva Автор
20.01.2026 07:15В этом случае LE использовать не получится, поскольку у него нет возможности валидировать владельца зоны .local, такой просто нет в интернете, НО, например, можно развернуть (и на курсах так и делаем) вот это: https://www.freeipa.org/page/V4/ACME

darkside83
20.01.2026 07:15Внутренний сайт может иметь любое доменное имя, не обязательно на .local оно должно заканчиваться

BlackSCORPION
20.01.2026 07:15Внутренние сайты рекомендуют использовать домен "home.arpa".
Есть такая штука https://smallstep.com/docs/step-ca, умеет в ACME (протокол автовыпуска сертификатов, как Let's Encrypt). Использую вместе с Caddy для https для докер контейнеров на домашнем сервере, с self-signed CA добавленым в трастстор на девайсах

c46fd3da
20.01.2026 07:15Давно существует https://auth.acme-dns.io и бот в телеге @acmednsbot как раз для таких случаев.
Зону можно держать на любом публичном DNS сервере, через CNAME все настраивается буквально за секунды.

ki11j0y
20.01.2026 07:15Есть acme.sh, есть dns api, работает великолепно, подключил настроил автопродление, профит, есть некоторое но, нужен хостер с поддержкой dns acme.
stantum
Если это внутренний сайт, то зачем морочиться с letsencrypt вместо выпуска собственного корневого сертификата - для организации?
valvalva Автор
Не нужно устанавливать корневой сертификат предприятия на домашние компьютеры пользователей, подключающихся через корпоративный ВПН
Dok_DD
я бы сказал: "не нужно пускать домашние компьютеры пользователя в корпоративную сеть. и наоборот".
valvalva Автор
У всех разные условия, у нас 50К пользователей, многие работают/учатся удаленно, плюс корпоративный wifi, удобнее использовать LE. Про безопасность, важные сети не доступны ни через VPN ни через wifi