create_acme_certificate
Set up a new ACME certificate in pfSense with at least one domain for validation, and optionally adjust DNS sleep, key length, and account settings.
Instructions
Create an ACME certificate entry
The pfSense API rejects a certificate with no domains ("Field
a_domainlist is required"), so at least one domain/SAN validation entry
must be provided at creation time.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Certificate name | |
| descr | No | Optional description | |
| dnssleep | No | Seconds to sleep after publishing the DNS-01 record instead of acme.sh auto-detecting propagation. Without this, acme.sh polls public DNS-over-HTTPS resolvers (cloudflare-dns.com, dns.google, etc.) to check propagation — on networks that block outbound DoH (common DNS-hardening setups), that check can never succeed and the issuance hangs indefinitely with no error. Set this (e.g. 60-120) to skip the check and just wait a fixed time before validation. | |
| keylength | No | Key length/type (e.g., '2048', '4096', 'ec-256', 'ec-384') | |
| acmeaccount | No | ACME account key reference name (from search_acme_account_keys) | |
| a_domainlist | Yes | List of domain (SAN) validation entries. Each dict needs: - name: fully-qualified domain name for this SAN - method: validation method, e.g. 'dns_cf' for Cloudflare DNS-01, 'http' for an HTTP-01 challenge, 'webroot', etc. — see the pfSense ACME package for the full provider list. - method-specific credential/config fields, e.g. for method='dns_cf': either {"cf_token": "..."} (scoped API token) or {"cf_email": "...", "cf_key": "..."} (legacy global key). Example: [{"name": "app.example.com", "method": "dns_cf", "cf_token": "..."}] To add/remove a single domain later without resending this whole list, use manage_acme_certificate_domain. | |
| apply_immediately | No | Whether to apply changes immediately |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||