Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

ACME uses HTTP-01 and DNS-01 challenges to check that a requester controls a domain identifier before a certificate can be issued. HTTP-01 asks the certificate authority (CA) to retrieve a token-derived response from a web path on port 80; DNS-01 asks it to find a token-derived value in a TXT record. Neither challenge issues a certificate by itself: the client must still finalize the order with a certificate signing request (CSR).

How ACME moves from an order to a certificate

RFC 8555 defines ACME as an order-and-authorization process. A client starts by requesting an order for one or more identifiers, such as domain names. The ACME server returns the authorization resources required by its policy; there is not necessarily a one-to-one match between identifiers in the order and authorization resources. RFC 8555

  1. Create an order. The client asks the server to issue a certificate for the requested identifiers.
  2. Complete authorizations. For a pending authorization, the client chooses a supported challenge and installs the corresponding proof before telling the server the challenge is ready for validation.
  3. Wait for validation. The CA checks the proof using the selected method. A successful challenge can make the authorization valid; unsuccessful validation can make it invalid. The protocol also defines other authorization states, including expired and deactivated.
  4. Finalize the order. Once all authorizations required for the order are valid, the order reaches ready. The client submits a PKCS#10 CSR to the order’s finalize URL. If the CA processes it and issues the certificate, the order becomes valid and provides a certificate URL.

The challenge therefore establishes control of an identifier for authorization purposes. It is a prerequisite to issuance, not the certificate request or the issuance step itself.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How HTTP-01 proves control

For HTTP-01, the ACME server provides a token. The client combines that token with a thumbprint derived from the ACME account’s public key to form the expected key authorization. The format is the token, a period, and the base64url-encoded JWK thumbprint. The client makes that value available at http://<domain>/.well-known/acme-challenge/<token>. The CA retrieves the resource over HTTP and checks that its response matches the expected key authorization. RFC 8555 specifies port 80 for this challenge. RFC 8555; Let’s Encrypt challenge types

Why port 80 and public reachability matter

The validation depends on the CA being able to fetch the challenge resource from the domain. The relevant web endpoint must therefore be reachable to the CA over HTTP on port 80 when validation occurs. A private-only service or a network path that blocks the request cannot serve the required proof.

What can interfere with the check

The server, reverse proxy, or routing rules must deliver the expected content at the challenge path. Redirect handling can also affect what a CA retrieves; do not assume every CA follows redirects in the same way. Check the selected CA’s current operational documentation and configure the endpoint accordingly.

How DNS-01 proves control

DNS-01 starts with the same token and account-key thumbprint used to form the key authorization. The client hashes that key authorization with SHA-256, then base64url-encodes the digest. It publishes the encoded value as a TXT record at _acme-challenge.<domain>. The CA looks up the TXT record and checks for the expected value. RFC 8555

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why the proof is a TXT record

The TXT record is the DNS-published proof that the client can arrange for the requested value to appear under the identifier’s challenge name. The CA compares the published digest with the one it derives from the challenge and account key; simply creating an arbitrary TXT record is not sufficient.

Wildcard identifiers and delegated DNS

DNS-01 supports wildcard authorizations; HTTP-01 does not. Let’s Encrypt’s operational guidance says it follows DNS standards for TXT lookups, so a CNAME or NS record can delegate challenge answering to another DNS zone. That can separate challenge automation from the primary zone, but it does not remove the need to protect the automation and scope its DNS credentials carefully. Let’s Encrypt challenge types

HTTP-01 and DNS-01 compared

Consideration HTTP-01 DNS-01
What the CA checks A token-derived key authorization served at the well-known challenge path. A SHA-256 digest of the key authorization published as a TXT record under _acme-challenge.
Network dependency The challenge URL must be reachable over HTTP on port 80. Does not depend on an inbound web request to the server.
Wildcard authorization Not supported. Supported.
Automation interface The client or web-server stack must place the response at the correct path. The client needs a way to publish the TXT record, manually or through DNS automation.
Operational consideration Web routing, proxies, and CA-specific redirect behavior can affect retrieval. DNS API credentials can increase the impact of a compromise; delegated challenge zones may help constrain automation.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Which challenge should you choose?

Choose HTTP-01 when the web path is available

HTTP-01 is a practical fit when the domain’s challenge URL can be exposed to the CA over port 80 and your client or web stack can reliably serve the expected response. It avoids the need for DNS-provider automation, but depends on the public web endpoint and its routing being correct during validation.

Choose DNS-01 for wildcard certificates or when inbound HTTP is unavailable

DNS-01 is necessary when you need wildcard authorization and is useful when the server cannot receive an inbound HTTP validation request. You must be able to publish the TXT proof, either manually or through an automation interface. If using DNS automation, consider a delegated challenge zone and restrict credentials to the narrowest scope your DNS provider supports.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keep protocol requirements separate from provider behavior

RFC 8555 defines the ACME protocol behavior. Let’s Encrypt’s challenge documentation describes that provider’s operational guidance, which can change over time. Boulder is software used by Let’s Encrypt; its implementation details are not a universal definition of how every ACME server behaves. Boulder documentation

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.