Skip to main content

certbot-dns-dnsmgr

Плагин-аутентификатор для Certbot, работающий с DNS через DNSmanager от ISPsystem.

Плагин автоматизирует прохождение проверки dns-01: создаёт TXT-запись через API DNSmanager, а после проверки удаляет её.

Настройка DNSmanager

Пользователь, от имени которого работает API, должен видеть список доменов (зон) и уметь управлять их ресурсными записями. Плагин сам выбирает в DNSmanager самую длинную зону, подходящую под проверяемый домен, поэтому работают и зоны вида example.com, и example.co.uk.

Установка

Плагин нужно ставить в то же Python-окружение, в котором установлен Certbot:

pip install certbot-dns-dnsmgr

Certbot, установленный через snap, не видит плагины из PyPI. В этом случае используйте Certbot, установленный через pip или пакетный менеджер, или Docker (см. ниже).

Проверить, что Certbot видит плагин:

certbot plugins

Аргументы командной строки

Чтобы Certbot проходил DNS-проверку через DNSmanager, передайте ему следующие аргументы:

Аргумент Описание
--authenticator dns-dnsmgr Выбрать этот плагин (обязательно).
--dns-dnsmgr-credentials INI-файл с учётными данными API DNSmanager. Обязателен, если учётные данные не переданы в командной строке.
--dns-dnsmgr-username Имя пользователя DNSmanager (вместо INI-файла).
--dns-dnsmgr-password Пароль DNSmanager (вместо INI-файла).
--dns-dnsmgr-endpoint URL API DNSmanager, например https://dns.example.com:1500/dnsmgr (вместо INI-файла).
--dns-dnsmgr-insecure Не проверять TLS-сертификат API DNSmanager (для самоподписанных сертификатов).
--dns-dnsmgr-propagation-seconds Сколько секунд ждать распространения DNS, прежде чем просить ACME-сервер проверить запись. По умолчанию 10.

Учётные данные

Пример файла credentials.ini:

dns_dnsmgr_username = admin
dns_dnsmgr_password = mysecretpassword
dns_dnsmgr_endpoint = https://dns.example.com:1500/dnsmgr
# Раскомментируйте, если у панели самоподписанный сертификат
# dns_dnsmgr_insecure = true

Если endpoint не заканчивается на /dnsmgr, суффикс добавляется автоматически.

Путь к файлу можно ввести интерактивно или передать аргументом --dns-dnsmgr-credentials. Certbot запоминает путь к файлу, чтобы использовать его при продлении, но содержимое файла не сохраняет.

Если файл доступен другим пользователям системы, Certbot выводит предупреждение «Unsafe permissions on credentials configuration file» с путём к файлу. Оно появляется при каждом использовании файла, в том числе при продлении. Убрать его можно только исправив права доступа, например командой chmod 600.

Примеры

Получить один сертификат на example.com и *.example.com с ожиданием распространения DNS 90 секунд:

certbot certonly \
  --authenticator dns-dnsmgr \
  --dns-dnsmgr-credentials /etc/letsencrypt/.secrets/domain.tld.ini \
  --dns-dnsmgr-propagation-seconds 90 \
  --server https://acme-v02.api.letsencrypt.org/directory \
  --agree-tos \
  --rsa-key-size 4096 \
  -d 'example.com' \
  -d '*.example.com'

Получить сертификат, передав учётные данные прямо в командной строке. Для скриптов так проще, но менее безопасно, если скрипт не защищён:

certbot certonly \
  --authenticator dns-dnsmgr \
  --dns-dnsmgr-username admin \
  --dns-dnsmgr-password mysecretpassword \
  --dns-dnsmgr-endpoint https://dns.example.com:1500/dnsmgr \
  --dns-dnsmgr-propagation-seconds 900 \
  -d example.com

Docker

Чтобы собрать Docker-образ с плагином, создайте в пустом каталоге такой Dockerfile:

FROM certbot/certbot
RUN pip install certbot-dns-dnsmgr

Соберите образ:

docker build -t certbot/dns-dnsmgr .

После сборки запускайте так:

docker run --rm \
   -v /var/lib/letsencrypt:/var/lib/letsencrypt \
   -v /etc/letsencrypt:/etc/letsencrypt \
   --cap-drop=all \
   certbot/dns-dnsmgr certonly \
   --authenticator dns-dnsmgr \
   --dns-dnsmgr-propagation-seconds 900 \
   --dns-dnsmgr-credentials \
       /etc/letsencrypt/.secrets/domain.tld.ini \
   --no-self-upgrade \
   --keep-until-expiring --non-interactive --expand \
   --server https://acme-v02.api.letsencrypt.org/directory \
   -d example.com -d '*.example.com'

Каталог с секретами рекомендуется защитить:

chown root:root /etc/letsencrypt/.secrets
chmod 700 /etc/letsencrypt/.secrets
chmod 600 /etc/letsencrypt/.secrets/*.ini

Release files for certbot-dns-dnsmgr 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for certbot-dns-dnsmgr 1.0.1
File Size Uploaded
certbot_dns_dnsmgr-1.0.1.tar.gz 10.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for certbot-dns-dnsmgr 1.0.1
File Interpreter ABI Platform
certbot_dns_dnsmgr-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 22.8 kB

Release files / certbot_dns_dnsmgr-1.0.1.tar.gz

Download URL certbot_dns_dnsmgr-1.0.1.tar.gz
Size 10.9 kB
Tags Source
SHA-256 checksum
How to use checksums
42ee1861a600b529f73670aacf4cee084b1d47a44b8f6c11c6bbd8e3e3b6848e
BLAKE2b-256 checksum
How to use checksums
5d963ff196d0164d089559a717a9cbe52581bb9520950c2a5b0c9886ed0331c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / certbot_dns_dnsmgr-1.0.1-py3-none-any.whl

Download URL certbot_dns_dnsmgr-1.0.1-py3-none-any.whl
Size 11.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
024267020c1df4ce4554a3a6e7ab51116ac797dc7661a182199820e232b06939
BLAKE2b-256 checksum
How to use checksums
57285d12466e3e41701c092d24d530e86138b5d0e988c1ca6baf10f3260f5d8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page