Domain registrar agnostic authenticator plugin for certbot
Project description
certbot-dns-local
Domain registrar agnostic authenticator plugin for certbot
An authenticator plugin for certbot to support Let's Encrypt DNS challenges (dns-01) for domains managed by any registrar.
Why use this authenticator plugin?
- There is no other authenticator plugin for your domain registrar.
- Some domain registrars do not support fine-grained API permissions. Storing domain registrar credentials in a file on a web server might pose a security risk to all your domains.
- Migrating from one domain registrar to another does not require a new authenticator plugin.
Installation
-
Optionally install the
netfilter_queuelibrary andiptables. On Debian-based systems, run:apt install libnetfilter-queue-dev iptables build-essentialThese dependencies enable support for DNS challenge authentication if UDP port 53 is already occupied.
-
Plugin installation:
- If you are using
certbotfrom your distribution repository or from the Python Package Index:pip install certbot-dns-local[netfilter] - If you are using
certbot-auto, clone the repository,cdinto the folder and run:/opt/eff.org/certbot/venv/bin/pip install certbot-dns-local[netfilter]
If you do not need the
netfilterfeature, you can install the plugin throughpip install certbot-dns-localwithout the[netfilter]suffix specifying optional dependencies. - If you are using
-
Set up a DNS
NSrecord for_acme-challenge.yourdomain.compointing to the server which certbot is running on.
For example:_acme-challenge.yourdomain.com. 300 IN NS yourdomain.com.Such a record has to be created for each subdomain which you want to obtain a certificate for.
Usage
A new certificate can be requested as follows:
certbot certonly -a dns-local -d yourdomain.com -d '*.yourdomain.com'
Older versions of certbot may require you to use the plugin legacy name as follows:
certbot certonly -a certbot-dns-local:dns-local -d yourdomain.com -d '*.yourdomain.com'
Renewals will automatically be performed using the same authenticator by certbot.
By default, the authenticator will attempt to resolve the challenge domain's nameserver IP addresses and bind sockets to these addresses.
This is done to prevent listening on 0.0.0.0 or ::, which may result in collisions with services like systemd-resolved. This behavior
can be overridden by specifying one or multiple bind addresses manually using the --dns-local-listen <address> parameter, e.g. in cases
where certbot is running behind NAT.
Docker Container
You can also use the Docker container as follows:
docker run -it --name certbot-dns-local -v /etc/letsencrypt:/etc/letsencrypt --rm --net=host ghcr.io/blechschmidt/certbot-dns-local:latest certonly -d yourdomain.com -d '*.yourdomain.com'
Behind the curtain
Behind the curtain, the plugin will open a UDP server on port 53 in order to serve the DNS validations. In case binding
to port 53 fails because it is already occupied by another application, it will fall back to packet interception using the
netfilter_queue library.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file certbot_dns_local-1.0.0.tar.gz.
File metadata
- Download URL: certbot_dns_local-1.0.0.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
623209e6363f53a0b42bd4774d4be841b4f440b6c2e1282d32c6290433abcbe9
|
|
| MD5 |
6530277cc7d5d31dbaed12c0833a0925
|
|
| BLAKE2b-256 |
25c25934a5ea108d65b668019125ce9a470caae9a53e79532dfd7ab37e975b24
|
Provenance
The following attestation bundles were made for certbot_dns_local-1.0.0.tar.gz:
Publisher:
publish.yml on blechschmidt/certbot-dns-local
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
certbot_dns_local-1.0.0.tar.gz -
Subject digest:
623209e6363f53a0b42bd4774d4be841b4f440b6c2e1282d32c6290433abcbe9 - Sigstore transparency entry: 642061462
- Sigstore integration time:
-
Permalink:
blechschmidt/certbot-dns-local@4307763f66819277c882d4eb44d3c1ab87cd97b8 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/blechschmidt
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4307763f66819277c882d4eb44d3c1ab87cd97b8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file certbot_dns_local-1.0.0-py3-none-any.whl.
File metadata
- Download URL: certbot_dns_local-1.0.0-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
965d10373c30cef5a204a9ac7a35d4765cf133fb4afca9d455182dddebd3dd99
|
|
| MD5 |
ce64c6e038af30cf1b6290df58a2c30a
|
|
| BLAKE2b-256 |
454d363c0ee58aedfb474db465e00cb755d1040a4fee688438a26dc060c1656f
|
Provenance
The following attestation bundles were made for certbot_dns_local-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on blechschmidt/certbot-dns-local
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
certbot_dns_local-1.0.0-py3-none-any.whl -
Subject digest:
965d10373c30cef5a204a9ac7a35d4765cf133fb4afca9d455182dddebd3dd99 - Sigstore transparency entry: 642061465
- Sigstore integration time:
-
Permalink:
blechschmidt/certbot-dns-local@4307763f66819277c882d4eb44d3c1ab87cd97b8 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/blechschmidt
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4307763f66819277c882d4eb44d3c1ab87cd97b8 -
Trigger Event:
push
-
Statement type: