ISPConfig DNS Authenticator plugin for Certbot using tokens from the ISPConfig DDNS module
This plugin automates the process of completing a dns-01
challenge by
creating, and subsequently removing, TXT records.
In the DNS -> Dynamic DNS -> Tokens
you need to have a token with the following rights:
- Allowed zones: all DNS zones for which you want to create ssl certificates
- Allowed record types:
TXT
- Limit records:
_acme-challenge
If you want to create certificates for subdomains, they must be included in the Limit records:
_acme-challenge,_acme-challenge.subdomain1,_acme-challenge.subdomain2
pip install certbot-dns-ispconfig-ddns
You can either use cli parameters to pass authentication information to certbot:
...
--dns-ispconfig-ddns-endpoint <your-ispconfig-url (e.g. https://server.example.com:8080>
--dns-ispconfig-ddns-token <your-ddns-token>
Or to prevent your credentials from showing up in your bash history, you can also create a
credentials-file ispconfig-ddns.ini
(the name does not matter) with the following content:
dns_ispconfig_ddns_endpoint=<your-ispconfig-url (e.g. https://server.example.com:8080>
dns_ispconfig_ddns_token=<your-ddns-token>
And then instead of using the --dns-ispconfig-ddns-*
parameters above, you can use
...
--dns-ispconfig-ddns-credentials </path/to/your/ispconfig-ddns.ini>
You can also mix these usages, though the cli parameters always take precedence over the ini file.
To acquire a single certificate for both example.com
and *.example.com
:
certbot certonly \
--non-interactive \
--agree-tos \
--email <your-email> \
--preferred-challenges dns \
--authenticator dns-ispconfig-ddns \
--dns-ispconfig-ddns-endpoint <https://server.example.com:8080> \
--dns-ispconfig-ddns-token <your-ddns-token> \
--dns-ispconfig-ddns-propagation-seconds 60 \
-d 'example.com' \
-d '*.example.com'
In order to create a docker container with a certbot-dns-ispconfig installation,
create an empty directory with the following Dockerfile
:
FROM certbot/certbot
RUN pip install certbot-dns-ispconfig-ddns
Proceed to build the image::
docker build -t certbot/dns-ispconfig-ddns .
Once that's finished, the application can be run as follows::
docker run --rm \
-v /var/lib/letsencrypt:/var/lib/letsencrypt \
-v /etc/letsencrypt:/etc/letsencrypt \
--cap-drop=all \
certbot/dns-ispconfig-ddns certonly \
--non-interactive \
--agree-tos \
--authenticator dns-ispconfig-ddns \
--dns-ispconfig-ddns-propagation-seconds 60 \
--dns-ispconfig-ddns-credentials /etc/letsencrypt/.secrets/domain.tld.ini \
-d example.com -d '*.example.com'