This is an old revision of the document!
Всем привет!
Однажды администратор одного из внутренних сайтов предприятия попросил прописать TXT запись для получения Let's Encrypt сертификата, поскольку сайт не доступен снаружи и нет возможности использовать проверку HTTP-01. Через три месяца попросил прописать другую, для продления, потом появился второй такой сайт, и, стало очевидно, что процесс пора автоматизировать. Уже после настройки нашлась хорошая статья, автору которой понадобилась проверка DNS-01 и стандарт RFC 2136 для выпуска wildcard сертификата от Let`s Encrypt, а так же, решение, позволяющее использовать внешний сервис предприятия для HTTP-01 проверки сертификатов внутренних сайтов.
Так, что кратко, возможно, кому то пригодиться
Назначаем IP адрес для внутреннего сайта и создаем поддомен для будущей DNS-01 проверки
dns# cat /etc/bind/yourdomain.ru ... anysite A N.N.N.N *.anysite CNAME anysite _acme-challenge.anysite NS ns ...
dns# cat /etc/bind/named.conf.local … zone “_acme-challenge.anysite.yourdomain.ru” {
type master;
file "/var/lib/bind/_acme-challenge.anysite.yourdomain.ru";
update-policy {
grant certbot.anysite name _acme-challenge.anysite.yourdomain.ru. txt;
};
}; …
dns# sudo -u bind nano /var/lib/bind/_acme-challenge.anysite.yourdomain.ru
$TTL 30 ; 30 seconds _acme-challenge.anysite.yourdomain.ru. IN SOA ns.yourdomain.ru. noc.yourdomain.ru. (
1 ; serial
86400 ; refresh (1 day)
43200 ; retry (12 hours)
604800 ; expire (1 week)
30 ; minimum (30 seconds)
)
NS ns.yourdomain.ru.
dns# rndc-confgen -a -A hmac-sha512 -k “certbot.anysite” -c /etc/bind/certbot.anysite.key
dns# chmod 640 /etc/bind/certbot.anysite.key
dns# cat /etc/bind/named.conf … include “/etc/bind/certbot.anysite.key”; …
dns# named-checkconf -z | less
dns# rndc reload
dns# nsupdate -k /etc/bind/certbot.anysite.key
server 127.0.01
dns# less /etc/bind/certbot.anysite.key
dns# scp /etc/bind/certbot.anysite.key user@anysite:
user@anysite:~$ nsupdate -k certbot.anysite.key
server <IP адрес dns сервера>
zone _acme-challenge.anysite.yourdomain.ru
update add _acme-challenge.anysite.yourdomain.ru. 30 IN TXT “test_txt_record 1”
send
update del _acme-challenge.anysite.yourdomain.ru. 30 IN TXT “test_txt_record 1”
send
quit
# any-any-site# nslookup -q=TXT _acme-challenge.anysite.yourdomain.ru # any-any-site# host -t TXT _acme-challenge.anysite.yourdomain.ru # any-any-site# dig TXT _acme-challenge.anysite.yourdomain.ru
==== Что необходимо сделать:
1. Установить плагин certbot-dns, в debian/ubuntu делается так:
anysite# apt install python3-certbot-dns-rfc2136
2. Создать файл конфигурации с таким содержимым:
anysite# cat /etc/certbot-credentials.ini dns_rfc2136_server = 195.19.32.2 dns_rfc2136_port = 53 dns_rfc2136_name = certbot.anysite dns_rfc2136_secret = d+P0fg32FsGV0CYOTmWBkQLjG4KnUNNNNNNNNNNNNNNNNNNNNNNNNNNNNN9QF5pzH+MpbYqGa1WB/yh1Q== dns_rfc2136_algorithm = HMAC-SHA512
3. Назначить права доступа к нему:
anysite# chmod 640 /etc/certbot-credentials.ini
4. Запросить сертификаты и убедиться в их создании
anysite# certbot certonly –dns-rfc2136 –dns-rfc2136-credentials /etc/certbot-credentials.ini -d 'anysite.yourdomain.ru' -d '*.anysite.yourdomain.ru' … IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/anysite.yourdomain.ru/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/anysite.yourdomain.ru/privkey.pem
5. Для автоматического продления убедиться в создании файла конфигурации и, наличии таймеров и сервисов
anysite:~# cat /etc/letsencrypt/renewal/anysite.yourdomain.ru.conf
anysite# systemctl status certbot.timer …
Active: active (waiting) ...
…
anysite# systemctl show certbot.service … TriggeredBy: ● certbot.timer …
Спасибо! ====
dns# journalctl | grep -i _acme-challenge.anysite … Nov 26 14:06:37 ns named[213146]: client @0x7f4711f3f898 195.19.32.16#60008/key certbot.anysite: view yourdomainnet: updating zone '_acme-challenge.anysite.yourdomain.ru/IN': adding an RR at '_acme-challenge.anysite.yourdomain.ru' TXT “7VqXPt5zZ36jRFe9A61om1OALWFloaI2Rz7_OGtFYpM” Nov 26 14:06:37 ns named[213146]: client @0x7f471200dc98 195.19.32.16#60020/key certbot.anysite: view yourdomainnet: updating zone '_acme-challenge.anysite.yourdomain.ru/IN': adding an RR at '_acme-challenge.anysite.yourdomain.ru' TXT “O67R1nFhhli0YaMQ2j-AtefRO0wr7mUwICbtzGnR_64” Nov 26 14:07:43 ns named[213146]: client @0x7f4711ab5498 195.19.32.16#36166/key certbot.anysite: view yourdomainnet: updating zone '_acme-challenge.anysite.yourdomain.ru/IN': deleting an RR at _acme-challenge.anysite.yourdomain.ru TXT Nov 26 14:07:43 ns named[213146]: client @0x7f4711f38898 195.19.32.16#36180/key certbot.anysite: view yourdomainnet: updating zone '_acme-challenge.anysite.yourdomain.ru/IN': deleting an RR at _acme-challenge.anysite.yourdomain.ru TXT … </code>