Getting Started with ACME

Getting Started with ACME #

To use ACME to automatically manage your certificates, you need to choose a client and a CA (Certificate Authority). Your choice will depend on your constraints and requirements. This page provides questions to ask yourself to aid your selection.

Before going any further, remember that the best way to manage certificates is to have someone else do it for you (if your setup allows it).

When implementing ACME, follow the guidance from the Best Practices for ACME Client Operations and the Let’s Encrypt integration guide (most recommendations aren’t specific to Let’s Encrypt, they apply to all ACME integrations).

Free Publicly Trusted ACME CAs #

As explained on this page, certificates provided by free CAs are as secure as certificates issued by commercial CAs.

It is recommended to use (or to be ready to use) more than one CA to mitigate the impact of CA outages and forced certificate revocations caused by compliance violations (which happen, even to the most rigorous CAs).

Depending on your needs, here are questions you may ask yourself to aid your selection. The answer to some of these questions may change over time and some answers may not be easily found online. Noteworthy well-known characteristics of free ACME CAs are listed below.

  • What is the SLO/SLA (Service Level Objective/Service Level Agreement) of the CA? (remember that using multiple CAs mitigates the impact of CA outages)
  • Does the CA provide user support?
  • Can the CA issue wildcard certificates? (they have drawbacks!)
  • Can the CA issue multi-domain certificates? (they have drawbacks!)
  • Can the CA issue certificates for internationalized domain names?
  • Can the CA issue certificates for IP addresses?
  • What rate limits does the CA enforce?
  • What challenge types does the CA support?
  • Does the CA support ARI (ACME Renewal Information)?
  • Does the CA require EAB (External Account Binding)? If yes, is it a problem for you?
  • What clients (web browsers, command-line utilities, operating systems, embedded systems, programming languages, etc.), and which versions, trust the certificates issued by the CA?
  • What is the security level and size of the CA’s certificate chains?
  • What key types, sizes, and algorithms does the CA support?

Once you’ve selected the CAs you want to use, make sure to set appropriate CAA records to allow them to issue certificates for your domains.

Google Trust Services

Noteworthy characteristics

Let's Encrypt

Noteworthy characteristics

ZeroSSL
  • Website
  • Integration guide
  • ACME directory URL: https://acme.zerossl.com/v2/DV90
  • Recognized CAA identities: sectigo.com, trust-provider.com, usertrust.com, comodoca.com, comodo.com, entrust.net, affirmtrust.com
  • Rate limits are not documented

Noteworthy characteristics

Buypass

Noteworthy characteristics

SSL.com
  • Website
  • Integration guide
  • ACME directory URL: https://acme.ssl.com/sslcom-dv-ecc
  • Recognized CAA identities: ssl.com
  • Rate limits are not documented

Noteworthy characteristics

ACME Clients #

Refer to https://letsencrypt.org/docs/client-options/ and https://acmeclients.com/ to find the client that best fits your needs.

Here are questions you may ask yourself to aid your selection. The answer to some of these questions may change over time and some answers may not be easily found online.

  • Is the client supported on your operating system?
  • Is the client integrated with your DNS/hosting provider? (to automatically solve ACME challenges)
  • Does the client support all challenge types you plan to use?
  • Does the client support EAB (External Account Binding)?
  • Does the client support ARI (ACME Renewal Information)?
  • Is the client popular/actively maintained?

If you are planning to implement your own client, use Pebble for your integration tests.

acmeprotocol.dev is a side project from Fabien Hochstrasser. The opinions expressed on this website are my own and do not reflect the views of my current or former employers.