Safeguard
Security Guides•

HTTP-01, DNS-01 or TLS-ALPN-01: which ACME challenge should you use?

Which ACME challenge fits your setup? HTTP-01 for most public sites, DNS-01 for wildcards and private hosts, TLS-ALPN-01 for proxies. Trade-offs inside.

Safeguard Security Team
3 min read

Use HTTP-01 for ordinary public web servers, DNS-01 when you need a wildcard certificate or the server is not reachable from the internet, and TLS-ALPN-01 if you build a TLS-terminating proxy that cannot use port 80. If you are unsure, start with your client's default, which is usually HTTP-01.

What a challenge is

Before a certificate authority issues a certificate, it must see proof that you control the names in it. In the ACME protocol that proof is called a challenge. Your ACME client answers it automatically, so most teams never think about it until something fails or a requirement changes, such as needing a wildcard.

The three types side by side

HTTP-01DNS-01TLS-ALPN-01
Where proof is placedFile under /.well-known/acme-challenge/ on port 80TXT record at _acme-challenge.your-domainSpecial certificate served on port 443
WildcardsNoYesNo
Needs public web serverYesNoYes
IP address certificatesYesNoYes
Client supportWideWide, needs a DNS API to automateLimited

These properties come from Let's Encrypt's published documentation, and other ACME authorities follow the same standard.

Choosing in practice

Single public site. HTTP-01 is the easy path. It works with off-the-shelf web servers and needs no knowledge of your DNS. The catch is port 80: it must be reachable, and if you run several servers, the challenge file must be available on all of them.

Wildcards or internal services. Use DNS-01. It works when the web server is not exposed to the public internet and when several servers share a name. The cost is a DNS API your client can call, plus careful handling of the credentials. Putting full DNS API credentials on a web server raises the damage if that server is compromised. Use narrowly scoped credentials, or delegate the challenge name, as covered in how to delegate ACME DNS challenges with a CNAME.

Hosting platforms. TLS-ALPN-01 does the whole check at the TLS layer using a custom ALPN protocol, defined in RFC 8737. That suits authors of reverse proxies, not most application teams.

Failure patterns to watch

  • HTTP-01 follows redirects, up to 10 deep, but just to ports 80 and 443.
  • DNS-01 can fail on propagation delay. Some providers need a wait of up to an hour unless their API reports when the record is live.
  • Old TXT records pile up. Clean them, because an oversized response gets rejected.
  • Repeated failures count against rate limits, so debug against staging.

Where Safeguard fits

Safeguard scans dependencies and SBOMs for known vulnerabilities, including those in the TLS and crypto libraries your projects pull in, and you can try it with the free scan at gold.safeguard.sh/scan.

Quick check

Can HTTP-01 issue a wildcard certificate?

No. Wildcard names require DNS-01.

Can I use HTTP-01 on a port other than 80?

No. The ACME standard restricts it to port 80, because arbitrary ports would weaken the check.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.