Я хочу создать SSL с подстановочными знаками для своего веб-сайта через LetsEncrypt
. Я выполнил инструкцию и после запуска Certbot
, это дает мне вызов DNS и говорит:
Please deploy a DNS TXT record under the name
_acme-challenge.db.example.com with the following value:
jn324jr348r342bhr234hrou234nbr4324fj34r
Также db.example.com находится внутри /etc/bind/
.
Что я делаю, так это то, что открылось db.example.com
и в нижней строке добавьте это:
_acme-challenge.db.example.com 3600 IN TXT "jn324jr348r342bhr234hrou234nbr4324fj34r"
Но когда я проверяю это так:
nslookup -type=TXT _acme-challenge.example.com
Это дает мне эту ошибку:
- The following errors were reported by the server:
Domain: db.example.com
Type: dns
Detail: DNS problem: NXDOMAIN looking up TXT for
_acme-challenge.db.example.com - check that a DNS record
exists for this domain
ubuntu@me-1:/etc/bind$ nslookup -type=TXT _acme-challenge.example.com
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find _acme-challenge.example.com: NXDOMAIN
И когда я запускаю Certbot, тоже получаю ошибку:
Some challenges have failed.
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: db.example.com
Type: dns
Detail: DNS problem: NXDOMAIN looking up TXT for
_acme-challenge.db.example.com - check that a DNS record
exists for this domain
Что я здесь делаю не так?
Обратите внимание, что вам нужно немного подождать, пока изменения в вашей зоне DNS не будут обновлены на серверах по всему миру. Ваша проблема в том, что вы пытаетесь проверить, не слишком ли быстро применяются изменения к DNS. В этом случае есть хороший выход, и он требует использования API DNS-провайдера. Если вы используете, например, OVH, вы можете использовать их API для изменений DNS, и certbot сможет немедленно проверить изменения. Здесь есть список всех плагинов API: https://certbot.eff.org/docs/using.html?highlight=dns#dns-plugins
Если ваш провайдер DNS не поддерживает это, попробуйте переместить зону DNS в Cloudflare. Это очень просто, и вы получите эту услугу бесплатно. Кроме того, с помощью DNS API вы сможете бесплатно обновлять подстановочные сертификаты, оставив одну команду в cron, например:
0 1 20 * * root certbot certonly --non-interactive -d example.com -d '*.example.com' --dns-cloudflare --dns-cloudflare-credentials /my/secret/api/key/location
Обратите внимание, что в файле зоны имена, не заканчивающиеся точкой .
являются относительными, обычно по отношению к текущему домену.
Итак, запись для _acme-challenge.db.example.com
внутри зоны для db.example.com
на самом деле означает запись для _acme-challenge.db.example.com.db.example.com.
Чтобы убедиться, что у вас есть правильная запись, вы можете:
Добавьте точку на конце: _acme-challenge.db.example.com.
Или не включать домен: _acme-challenge
Это основано на зоне, предназначенной для db.example.com
, все было бы немного иначе, если бы зона была example.com
вместо.
Также не забудьте обновить серийный номер зоны (в записи SOA) при его обновлении и перезагрузить зону.
Это, конечно, основано на том, что зарегистрированные серверы имен для вашего домена являются вашим собственным сервером (и вторичным).
При запросе с использованием nslookup
или dig
вы можете сказать им, с какого сервера запросить ответ. Всегда начинайте с проверки первичного, затем вторичного, а затем других серверов. И не забывайте, что некоторые типы обновлений могут занять некоторое время (особенно изменения, которые зависят от TTL предыдущей записи, и дополнения, которые зависят от отрицательного TTL кеша домена).