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)
| File | Size | Uploaded | |
|---|---|---|---|
| certbot_dns_dnsmgr-1.0.1.tar.gz | 10.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|