A comprehensive Delphi FMX application and DNS API library designed for managing DNS zones/records across multiple cloud providers. Now extended with a full ACME Certificate Client supporting DNS-01 authentication, enabling automated SSL/TLS certificate issuance similar to Certbot — but in native Delphi.
This project now includes:
-
A modular DNS provider system
-
A cross-platform FMX DNS Manager UI
-
A new ACME certificate module with:
- ACME Account registration
- Order creation, authorization tracking
- DNS-01 challenge handling
- Certificate finalisation and chain splitting
- Automatic certificate storage (Windows/Linux compatible)
- Manage DNS zones from supported providers.
- Create and delete zones via the UI.
- Add, edit, delete DNS records using provider APIs.
- Secure credential storage for provider API keys.
- Consistent interface across all DNS providers.
- FMX UI with animated panels & responsive layouts.
-
Fully implemented ACME v2 client (Let’s Encrypt / Buypass / ZeroSSL compatible).
-
Uses DNS-01 validation via your selected DNS provider.
-
Native Delphi implementation of:
- JWK account key
- JWS-signed ACME requests
- Nonces, directory discovery, account registration
- Order lifecycle management
- Authorization + DNS challenge preparation
- Finalization and certificate retrieval
-
Automatic certificate storage, structured like Certbot:
/etc/letsencrypt/live/<domain>on Linux%ProgramData%\Acme\<domain>on Windows
-
Built-in certificate chain splitting (
cert.pem,chain.pem,fullchain.pem) -
Cross-platform support (Windows, Linux, macOS)
- Delphi 11+ (FMX Framework)
- DNS provider API credentials (e.g., Vultr, DigitalOcean)
- Internet access for DNS and ACME API calls
- Domain name that you control (for ACME validation)
- Reusable provider-neutral abstraction in
DNS.Base. - Provider modules implement zone/record CRUD via a shared class structure.
- Asynchronous operations using
TTask&Synchronize.
-
Located in
ACME.Client.*units. -
Modular design:
TACMEClient— high-level API
-
Integrates with any DNS provider that supports TXT record management.
- Open the project in Delphi 11+.
- Enter the API key for your DNS provider.
- Manage DNS zones and records through the UI.
-
Create an ACME account (staging or production).
-
Start a new certificate order.
-
The client automatically:
- Generates DNS-01 TXT record content
- Publishes it using your selected DNS provider
- Waits for propagation
- Notifies the ACME server
-
Upon successful validation:
- Certificates are finalized
- Stored in a Certbot-compatible folder structure
- Returned to the application for further processing
This project now supports DNS + ACME DNS-01 workflows for the following providers:
| Provider | DNS Support | ACME-DNS Ready |
|---|---|---|
| Vultr DNS | ✅ | ✅ |
| DigitalOcean DNS | ✅ | ✅ |
| Microsoft Azure DNS | ✅ | |
| Bunny.net | ⏳ Untested | ⏳ |
| Cloudflare DNS | ⏳ Untested | ⏳ |
| AWS Route53 | ⏳ Untested | ⏳ |
| Google Cloud DNS | ⏳ Untested | ⏳ |
| Ubiquiti Network Application | ⏳ Untested | Not Supported (LAN Only) |
| GoDaddy | Planned | Planned |
| Namecheap | Planned | Planned |
| BinaryLane (AU) | Planned | Planned |
| PowerDNS | Planned | Planned |
| OpenStack Designate | Planned | Planned |
Matches Certbot conventions for maximum compatibility.
/etc/letsencrypt/live/<domain>/cert.pem
/etc/letsencrypt/live/<domain>/chain.pem
/etc/letsencrypt/live/<domain>/fullchain.pem
/etc/letsencrypt/live/<domain>/privkey.pem
%ProgramData%\Acme\<domain>\cert.pem
%ProgramData%\Acme\<domain>\chain.pem
%ProgramData%\Acme\<domain>\fullchain.pem
%ProgramData%\Acme\<domain>\privkey.pem
| File | Description |
|---|---|
DNS.UI.Main.pas/.fmx |
Core FMX interface for provider + ACME functions. |
DNS.Base.pas |
Shared provider abstractions. |
DNS.Vultr.pas, DNS.DigitalOcean.pas, DNS.Azure.pas |
Provider-specific DNS implementations. |
DNS.Helpers.pas |
JSON & REST utilities. |
ACME.Client.pas |
High-level ACME workflow controller. |
ACME.Client.Dns01.pas |
Dns-01 validation logic. |
ACME.Client.Http01.pas |
Http-01 validation logic. Mostly TODO: |
ACME.TaurusCrypto.pas |
Certificate/Encryption handling code |
- UI for scheduled auto-renewal of certificates.
- Background service (Windows/Linux daemon) for unattended renewal.
- Additional DNS providers.
- OCSP stapling helper.
- Import/export DNS zone editor.
- Advanced logging.
Released under the MIT License.
Geoffrey Smith Delphi Developer & Open Source Contributor
Contributions are welcome! Please follow Delphi style conventions and ensure new modules conform to the shared interfaces.