В настоящее время можно выполнить проверку DNS также с помощью клиента certbot LetsEncrypt в ручном режиме. Автоматизация также возможна (см. Ниже).
Ручной плагин
Вы можете выполнить ручную проверку - с помощью ручного плагина.
certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly
Certbot предоставит вам инструкции по обновлению записи TXT для домена вручную, чтобы продолжить проверку.
Please deploy a DNS TXT record under the name
_acme-challenge.bristol3.pki.enigmabridge.com with the following value:
667drNmQL3vX6bu8YZlgy0wKNBlCny8yrjF1lSaUndc
Once this is deployed,
Press ENTER to continue
После того, как вы обновили запись DNS, нажмите Enter, certbot продолжит работу, и если LetsEncrypt CA подтвердит вызов, сертификат будет выдан как обычно.
Вы также можете использовать команду с большим количеством опций, чтобы минимизировать интерактивность и отвечать на вопросы certbot. Обратите внимание, что ручной плагин еще не поддерживает неинтерактивный режим.
certbot --text --agree-tos --email you@example.com -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns --expand --renew-by-default --manual-public-ip-logging-ok certonly
Обновление не работает с ручным плагином, так как он работает в неинтерактивном режиме. Больше информации в официальной документации Certbot .
Обновление: ручные крючки
В новой версии Certbot вы можете использовать крючки , например --manual-auth-hook
, --manual-cleanup-hook
. Хуки - это внешние скрипты, выполняемые Certbot для выполнения задачи.
Информация передается в переменных среды - например, домен для проверки, токен запроса. Варс: CERTBOT_DOMAIN
, CERTBOT_VALIDATION
, CERTBOT_TOKEN
.
certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /path/to/dns/authenticator.sh --manual-cleanup-hook /path/to/dns/cleanup.sh -d secure.example.com
Вы можете написать свой собственный обработчик или использовать уже существующий, есть много доступных, например, для Cloudflare DNS.
Более подробная информация об официальной документации Certbot Hooks
Автоматизация, Обновление, Сценарии
Если вы хотите автоматизировать проверку проблем DNS, в настоящее время это невозможно с vanila certbot. Обновление: некоторая автоматизация возможна с крючками Certbot.
Таким образом, мы создали простой плагин, который поддерживает скрипты с автоматизацией DNS. Это доступно как certbot-external-auth .
pip install certbot-external-auth
Он поддерживает методы проверки DNS, HTTP, TLS-SNI. Вы можете использовать его в режиме обработчика или в режиме вывода JSON.
Режим обработчика
В режиме обработчика плагин certbot + вызывает внешние хуки (программу, скрипт оболочки, python, ...) для проверки и установки. На практике вы пишете простой скрипт обработчика / оболочки, который получает входные аргументы - домен, токен и вносит изменения в DNS. Когда обработчик завершает работу, certbot продолжает проверку как обычно.
Это дает вам дополнительную гибкость, обновление также возможно.
Режим Обработчик также совместим с обезвоженных крючками DNS (бывший letsencrypt.sh). Уже есть много хуков DNS для обычных провайдеров (например, CloudFlare, GoDaddy, AWS). В репозитории есть README с обширными примерами и примерами обработчиков.
Пример с перехваченным DNS-крючком:
certbot \
--text --agree-tos --email you@example.com \
--expand --renew-by-default \
--configurator certbot-external-auth:out \
--certbot-external-auth:out-public-ip-logging-ok \
-d "bristol3.pki.enigmabridge.com" \
--preferred-challenges dns \
--certbot-external-auth:out-handler ./dehydrated-example.sh \
--certbot-external-auth:out-dehydrated-dns \
run
Режим JSON
Другой режим плагина - это режим JSON. Он производит один объект JSON на строку. Это позволяет более сложную интеграцию - например, Ansible или какой-либо менеджер развертывания вызывает certbot. Связь осуществляется через STDOUT и STDIN. Cerbot создает объект JSON с данными для проверки, например:
certbot \
--text --agree-tos --email you@example.com \
--expand --renew-by-default \
--configurator certbot-external-auth:out \
--certbot-external-auth:out-public-ip-logging-ok \
-d "bristol3.pki.enigmabridge.com" \
--preferred-challenges dns \
certonly 2>/dev/null
{"cmd": "perform_challenge", "type": "dns-01", "domain": "bs3.pki.enigmabridge.com", "token": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4", "validation": "ejEDZXYEeYHUxqBAiX4csh8GKkeVX7utK6BBOBshZ1Y", "txt_domain": "_acme-challenge.bs3.pki.enigmabridge.com", "key_auth": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4.tRQM98JsABZRm5-NiotcgD212RAUPPbyeDP30Ob_7-0"}
После обновления DNS вызывающий абонент отправляет символ новой строки в STDIN сервера certbot, чтобы сообщить, что он может продолжить проверку.
Это позволяет автоматизировать и управлять сертификатами с центрального сервера управления. Для установки вы можете развернуть сертификаты через SSH.
Для получения дополнительной информации обратитесь к readme и примерам на certbot-external-auth GitHub.
РЕДАКТИРОВАТЬ: есть также новое сообщение в блоге, описывающее проблему проверки DNS и использование плагина.
РЕДАКТИРОВАТЬ: в настоящее время мы работаем над Ansible двухэтапной проверки, скоро будет выключен.