Skip to main content

certbot-dns-edgeone

English | 中文

Tencent Cloud EdgeOne (TEO) DNS Authenticator plugin for Certbot (similar to certbot-dns-aliyun / certbot-dns-cloudflare), allowing automated issuance and renewal of Let's Encrypt SSL/TLS certificates (including wildcard certificates).

This plugin automates the process of completing dns-01 challenges by creating and subsequently removing _acme-challenge TXT records via the Tencent Cloud EdgeOne API.


Features

  • Automated DNS-01 Challenge: Automatically matches the corresponding EdgeOne Zone, creates verification TXT records, and cleans them up after ACME validation.
  • Wildcard Certificate Support: Full support for single domains, multi-domains (SAN), and wildcard domains (e.g., *.example.com).
  • IDN / Punycode Support: Built-in support for internationalized domain names (Chinese, Japanese, etc.).
  • Smart Zone Discovery & Caching: Progressively looks up parent domains to locate the EdgeOne Zone ID, with in-memory caching to minimize API requests.
  • Customizable: Allows specifying a zone-id explicitly and configuring custom DNS propagation wait times.

Installation

In your virtual environment:

uv pip install certbot-dns-edgeone

Or install from source:

git clone https://github.com/hurole/certbot-dns-edgeone.git
cd certbot-dns-edgeone

# Create and activate virtual environment
uv venv
source .venv/bin/activate

# Install in editable mode
uv pip install -e .

Using pip

pip install certbot certbot-dns-edgeone

Verify that Certbot discovers the plugin:

certbot plugins

You should see * dns-edgeone listed in the output:

* dns-edgeone
Description: Obtain certificates using a DNS TXT record (if you are using Tencent Cloud EdgeOne for DNS).
Interfaces: Authenticator, Plugin
Entry point: dns-edgeone = certbot_dns_edgeone.dns_edgeone:Authenticator

Credentials

  1. Go to Tencent Cloud CAM Console - API Key Management to generate an API key (SecretId and SecretKey).
  2. Ensure the user or role has the required EdgeOne (TEO) permissions (QcloudTEOFullAccess or a custom policy granting teo:DescribeZones, teo:CreateDnsRecord, teo:DescribeDnsRecords, and teo:DeleteDnsRecords).
  3. Create a credentials INI file (e.g., ~/.secrets/certbot/edgeone.ini):
# Tencent Cloud EdgeOne API credentials
dns_edgeone_secret_id = YOUR_TENCENTCLOUD_SECRET_ID
dns_edgeone_secret_key = YOUR_TENCENTCLOUD_SECRET_KEY

# Optional: STS Security Token (if using temporary credentials)
# dns_edgeone_token = your_sts_token

# Optional: Manually specify EdgeOne Zone ID (skips auto-discovery)
# dns_edgeone_zone_id = zone-2noz78a8ev6k
  1. Secure the credentials file:
chmod 600 ~/.secrets/certbot/edgeone.ini

Usage

Request a Certificate

Run certbot certonly with the dns-edgeone authenticator:

certbot certonly \
  -a dns-edgeone \
  --dns-edgeone-credentials ~/.secrets/certbot/edgeone.ini \
  --dns-edgeone-propagation-seconds 30 \
  -d example.com \
  -d "*.example.com"

Automatic Renewal

Certbot renews certificates automatically before they expire (usually within 30 days) via cron or a systemd timer.

Test renewal using dry-run mode:

certbot renew --dry-run

Arguments

Argument Default Description
--dns-edgeone-credentials Required Path to INI credentials file containing EdgeOne API secret_id and secret_key
--dns-edgeone-propagation-seconds 30 Seconds to wait for DNS propagation before ACME validation
--dns-edgeone-zone-id Auto Optional EdgeOne Zone ID (e.g. zone-xxxxxx) to override automatic discovery

Development & Testing

Run the test suite using pytest:

uv pip install pytest
pytest -v

License

Apache License 2.0

Metadata

Release files for certbot-dns-edgeone 0.1.0

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-edgeone 0.1.0
File Size Uploaded Provenance Actions
certbot_dns_edgeone-0.1.0.tar.gz 13.5 kB Without provenance Details for certbot_dns_edgeone-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for certbot-dns-edgeone 0.1.0
File Interpreter ABI Platform Actions
certbot_dns_edgeone-0.1.0-py3-none-any.whl Python 3 none any Details for certbot_dns_edgeone-0.1.0-py3-none-any.whl

Total release size: 24.5 kB

Release files / certbot_dns_edgeone-0.1.0.tar.gz

Download URL certbot_dns_edgeone-0.1.0.tar.gz
Size 13.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ac02a114447d232ad3fd56dcd401aad637bdf26eea0845105109b1335bec7d2f
BLAKE2b-256 checksum
How to use checksums
762f6267dc0f1897552f0304a78da45f9bdb70d227f9be8386817ca6b203d407
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / certbot_dns_edgeone-0.1.0-py3-none-any.whl

Download URL certbot_dns_edgeone-0.1.0-py3-none-any.whl
Size 11.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d8cdc0c9c84a81a790d82a07d4ce5180a3c6488b72a616cff750e7a041703612
BLAKE2b-256 checksum
How to use checksums
bf69490b6218676eb52871485398d951f5c3de1b2496866813c07f9b6a35eb56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for certbot-dns-edgeone 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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