LinuxCommandLibrary

acme.sh-dns

Automate DNS challenge for Let's Encrypt

TLDR

Issue a certificate using an automatic DNS API mode

$ acme.sh --issue --dns [gnd_gd] --domain [example.com]
copy

Issue a wildcard certificate (denoted by an asterisk) using an automatic DNS API mode
$ acme.sh --issue --dns [dns_namesilo] --domain [example.com] --domain [*.example.com]
copy

Issue a certificate using a DNS alias mode
$ acme.sh --issue --dns [dns_cf] --domain [example.com] --challenge-alias [alias-for-example-validation.com]
copy

Issue a certificate while disabling automatic Cloudflare/Google DNS polling after the DNS record is added by specifying a custom wait time in seconds
$ acme.sh --issue --dns [dns_namecheap] --domain [example.com] --dnssleep [300]
copy

Issue a certificate using a manual DNS mode
$ acme.sh --issue --dns --domain [example.com] --yes-I-know-dns-manual-mode-enough-go-ahead-please
copy

SYNOPSIS

Run acme.sh and set the environment variables for DNS API authentication

PARAMETERS

DNS API provider specific environment variables
    These are specific to your DNS provider. Examples include:
- `DP_Id`
- `DP_Key`
- `Ali_Key`
- `Ali_Secret`

DESCRIPTION

The acme.sh-dns command is not a standalone Linux command, but rather a helper script or function intended for use with the acme.sh ACME (Automatic Certificate Management Environment) client. It simplifies the process of obtaining Let's Encrypt (or other ACME CA) certificates using DNS challenges. DNS challenges require you to prove control over a domain by adding specific TXT records to your DNS zone. This script provides a convenient way to automate these DNS record updates through various DNS providers' APIs.


Instead of manually creating and deleting DNS records during the certificate issuance process, acme.sh-dns can leverage your DNS provider's API to handle these updates automatically. It works in conjunction with acme.sh's --dns option. The specific usage varies based on the DNS provider you are using, requiring setting environment variables (or configuration files) to store the API credentials.


The command generally focuses on setting environment variables that are then used as options by the main acme.sh script. It aims to simplify the syntax when requesting a certificate using a DNS challenge.

CAVEATS

acme.sh-dns is not a command in itself but a convention of creating environment variables.
Configuration is heavily dependent on the DNS provider.

USAGE EXAMPLE (CLOUDFLARE)

To use Cloudflare's API with acme.sh:
`export CF_Key="your_cloudflare_api_key"`
`export CF_Email="your_cloudflare_email"`
Then you can issue a certificate:
`acme.sh --issue --dns dns_cf -d example.com -d www.example.com`

PROVIDER SPECIFIC DOCUMENTATION

Refer to the acme.sh documentation or your DNS provider's documentation for the specific environment variables required and any provider-specific instructions.

HISTORY

The acme.sh-dns method evolved as a way to streamline DNS-based certificate validation. Initially, users had to manually create and delete DNS TXT records. The introduction of API integration with DNS providers, coupled with helper scripts and functions, automated the process, reducing the complexity and potential for errors. It has gained popularity with the increasing adoption of Let's Encrypt and the need for automated certificate management.

SEE ALSO

acme.sh(1)

Copied to clipboard