Certbot / ACME DNS-01
Issue or renew TLS certificates, including wildcards, by automating the _acme-challenge TXT record that the ACME DNS-01 challenge requires. No open ports or HTTP access needed.
How it works
The DNS-01 flow touches the API three times:
- 1
Find the zone
Look up which zone owns the name you are certifying.
curl -H "Authorization: Bearer $API_KEY" \ "https://api.yeil.app/v1/dns/zones?suffix_of=example.com" - 2
Add the challenge record
Create a TXT record with a short TTL so the CA picks it up quickly.
curl -X POST \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{"name":"_acme-challenge","type":"TXT","content":"$VALIDATION_TOKEN","ttl":60}' \ "https://api.yeil.app/v1/dns/zones/$ZONE_ID/records" - 3
Clean up
Once ACME validates, delete the record. Use the id from the
POSTresponse.curl -X DELETE \ -H "Authorization: Bearer $API_KEY" \ "https://api.yeil.app/v1/dns/zones/$ZONE_ID/records/$RECORD_ID"
Using the certbot plugin
The certbot-dns-yeil plugin runs these three steps automatically. Install it alongside certbot, then write a credentials file:
pip install certbot certbot-dns-yeilCreate a credentials file (mode 600):
# /etc/letsencrypt/dns-yeil.ini
dns_yeil_api_key = yk_...Then run certbot with the dns-yeil authenticator:
certbot certonly \
--authenticator dns-yeil \
--dns-yeil-credentials /etc/letsencrypt/dns-yeil.ini \
--dns-yeil-propagation-seconds 10 \
-d example.com \
-d "*.example.com"The key needs record-level write on the zone (or a per-zone override). No zone-management permission is required.