certbot-dns-godaddy-v3
godaddy DNS Authenticator plugin for certbot.
This is a fork of miigotu/certbot-dns-godaddy by Dustyn Gibson, rewritten to use GoDaddy's Domains v3 API with Personal Access Tokens and to support current certbot releases. It is tested and working as of October 2026. It is published on PyPI as certbot-dns-godaddy-v3 and registers the certbot plugin dns-godaddy-v3, so it can be installed alongside the original package.
This plugin automates the process of completing a dns-01 challenge by creating, and subsequently removing, TXT records using the GoDaddy Domains v3 API, authenticated with a Personal Access Token.
Requirements: Python >= 3.10 and certbot >= 2.8.0 (tested through certbot 5.8).
Coming from the original plugin? See Switching from certbot-dns-godaddy.
Installation
# create a virtual environment, to avoid conflicts
python3 -m venv /some/path
# use the pip in the virtual environment to install or update
/some/path/bin/pip install -U certbot-dns-godaddy-v3
# use the certbot from the virtualenv, to avoid accidentally
# using one from a different environment that does not have this library
/some/path/bin/certbot
Named Arguments
To start using DNS authentication for godaddy, pass the following arguments on certbot's command line:
| Option | Description |
|---|---|
--authenticator dns-godaddy-v3 |
select the authenticator plugin (Required) |
--dns-godaddy-v3-credentials FILE |
godaddy credentials INI file. (Required) |
--dns-godaddy-v3-propagation-seconds NUM |
how long to wait before ACME tries to verify DNS. (Default: 30, Recommended: 60-120) |
--dns-godaddy-v3-ttl NUM |
TTL of the TXT record in seconds. GoDaddy accepts 600 to 86400. (Default: 600) |
GoDaddy's authoritative nameservers usually serve new records within a few seconds, so a propagation time of 60-120 seconds is recommended. Increase it if validation fails because the record wasn't found.
Credentials
Use of this plugin requires a configuration file containing a GoDaddy Personal Access Token (PAT). To create one:
- Sign in on the Personal Access Token page and select Generate Token.
- Give it a name, choose how long it stays valid (7, 30, 60 or 90 days, or 1 year), and grant it these scopes (under Domains & DNS):
domains.domain:read, used to find the DNS zone and existing recordsdomains.dns:update, used to create and delete the TXT records
- Select Create Token and copy it. GoDaddy only shows it once.
An example credentials.ini file:
dns_godaddy_v3_token = your-personal-access-token
Token expiry: a PAT stops working when it expires (after one year at most), and automatic renewals will then fail with an HTTP 401 error. Note the expiry date and replace the token in the credentials file before then.
The path to this file can be provided interactively or using the --dns-godaddy-v3-credentials command-line argument. Certbot records the path to this file for use during renewal, but does not store the file's contents.
CAUTION: You should protect these API credentials as you would the password to your godaddy account. Users who can read this file can use these credentials to issue arbitrary API calls on your behalf. Users who can cause Certbot to run using these credentials can complete a dns-01 challenge to acquire new certificates or revoke existing certificates for associated domains, even if those domains aren't being managed by this server.
Certbot will emit a warning if it detects that the credentials file can be accessed by other users on your system. The warning reads "Unsafe permissions on credentials configuration file", followed by the path to the credentials file. This warning will be emitted each time Certbot uses the credentials file, including for renewal, and cannot be silenced except by addressing the issue (e.g., by using a command like chmod 600 to restrict access to the file).
Examples
To acquire a single certificate for both example.com and *.example.com, waiting 120 seconds for DNS propagation:
certbot certonly \\
--authenticator dns-godaddy-v3 \\
--dns-godaddy-v3-credentials ~/.secrets/certbot/godaddy.ini \\
--dns-godaddy-v3-propagation-seconds 120 \\
--dns-godaddy-v3-ttl 600 \\
--keep-until-expiring --non-interactive --expand \
--server https://acme-v02.api.letsencrypt.org/directory \
-d 'example.com' \\
-d '*.example.com'
Docker
You can build a docker image from source using the included Dockerfile:
docker build -t certbot-dns-godaddy-v3 .
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-godaddy-v3 certbot certonly \
--authenticator dns-godaddy-v3 \
--dns-godaddy-v3-propagation-seconds 120 \
--dns-godaddy-v3-ttl 600 \
--dns-godaddy-v3-credentials /var/lib/letsencrypt/godaddy_credentials.ini \
--keep-until-expiring --non-interactive --expand \
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos --email "webmaster@example.com" \
-d example.com -d '*.example.com'
You may want to change the volumes /var/lib/letsencrypt and /etc/letsencrypt to local directories where the certificates and configuration should be stored.
Switching from certbot-dns-godaddy
The original certbot-dns-godaddy plugin no longer works, because it uses GoDaddy's classic API key/secret, which the Domains v3 API does not accept. This package is a separate plugin, so certificates set up with the original need to be switched over:
- Install this package:
pip install certbot-dns-godaddy-v3. You can thenpip uninstall certbot-dns-godaddy. - Create a Personal Access Token as described in Credentials, and replace the
dns_godaddy_keyanddns_godaddy_secretlines in your credentials file withdns_godaddy_v3_token = <token>. - For each certificate, run
certbot certonly --cert-name <name> --force-renewalwith the same-ddomains,--authenticator dns-godaddy-v3and the--dns-godaddy-v3-*options shown above (certbot certificateslists the names). Certbot then records the new plugin in that certificate's renewal configuration, andcertbot renewkeeps using it.
If the credentials file still contains a key and secret, certbot stops with an error explaining step 2.
Credits
This project started as a fork of certbot-dns-godaddy by Dustyn Gibson (@miigotu), which is no longer maintained. Thanks to Dustyn and that project's contributors for the original plugin. The Domains v3 rewrite is maintained by @Responsible-User. Both are licensed under the Apache License 2.0.
Metadata
Release files for certbot-dns-godaddy-v3 3.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_godaddy_v3-3.0.1.tar.gz | 19.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| certbot_dns_godaddy_v3-3.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.8 kB
Release files / certbot_dns_godaddy_v3-3.0.1.tar.gz
| Download URL | certbot_dns_godaddy_v3-3.0.1.tar.gz |
|---|---|
| Size | 19.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
99e24d86a7e38e7f83ad32455e9097387fc2ff2fd41450cfd054d3a5b0626a21
|
|
BLAKE2b-256 checksum How to use checksums |
2a00531b74b6be68b93d403f3739a475089fbc5f99145753faa67dc775e9952a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.5.1 CPython/3.11.0 Linux/6.17.0-1022-azure
|
Release files / certbot_dns_godaddy_v3-3.0.1-py3-none-any.whl
| Download URL | certbot_dns_godaddy_v3-3.0.1-py3-none-any.whl |
|---|---|
| Size | 14.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
594be248948ef1d0c3ea5953db7b5cf39bb66dc9066dd66c557fd9d2854f5a3a
|
|
BLAKE2b-256 checksum How to use checksums |
09a0423897fe6d630c573655f054652440c2a95a5891ce424727ca84e02f7727
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.5.1 CPython/3.11.0 Linux/6.17.0-1022-azure
|