Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Driver acme

Supported keywords:

  • comment
  • directory
  • renew_before
  • webroot

Keyword comment

required:    false
scopable:    false

Description:

A free form text describing the role of the object, of the node, or of the section it is set in.

The keyword is accepted in any section, so the DEFAULT section can document a configuration as a whole, and a resource, pool, heartbeat, array or network section can document itself.

The agent does not interpret the value.

Keyword directory

required:    false
scopable:    false

Example:

directory=letsencrypt

Description:

The ACME directory the certificate of the sec is issued by, renewed by om <path> certificate renew or a task.acme resource. letsencrypt and letsencrypt-staging name the directories of Let’s Encrypt, and any other value is the url of a directory.

The domains are the cn and the alt_names of the sec, and the account is registered there, with its email as the contact when it has one.

A sec naming no directory has its certificate generated as certificate create does, self-signed or signed by its ca, and renewed the same way when due.

Use the staging directory of Let’s Encrypt to try a setup out: its certificates are not trusted, and its rate limits are far higher.

A certificate of Let’s Encrypt for two names, its http-01 challenges served by the http server of the domains from a webroot:

[DEFAULT]
cn = www.example.com
alt_names = example.com
email = admin@example.com

[acme]
directory = letsencrypt
webroot = /srv/web.ns1.vol.cluster1/acme-challenges

The same, tried out first on the staging directory:

[acme]
directory = letsencrypt-staging
webroot = /srv/web.ns1.vol.cluster1/acme-challenges

Changing the directory, as from letsencrypt-staging to letsencrypt once the setup works, makes the next renewal issue a new certificate from the directory now named, due or not.

A sec listed in the listener.tls_secs of the cluster needs no webroot: the listener of every node answers its challenges on listener.acme_port.

A certificate of the directory of an ACME server of your own, as a smallstep step-ca with an ACME provisioner named acme, served with a certificate the node trusts:

[acme]
directory = https://ca.example.com/acme/acme/directory

A certificate of a pebble test server, its certificate trusted by the node too:

[acme]
directory = https://pebble.example.com:14000/dir

A directory requiring an external account binding, as ZeroSSL and Google Trust Services do, is not supported: the account is registered without one.

Keyword renew_before

required:    false
scopable:    false
default:     30d
convert:     duration

Example:

renew_before=20d

Description:

How long before its expiry the certificate is renewed: a renewal earlier than that does nothing. A certificate naming other domains than the sec asks, or self-signed, is renewed whatever its expiry.

Keyword webroot

required:    false
scopable:    true
rbac:        A host path the challenge token is written in requires the root grant.

Example:

webroot=/srv/web-cfg.ns1.vol.cluster1/acme-challenges

Description:

The directory, on the node renewing the certificate, the http server of the domains serves /.well-known/acme-challenge/ from: the renewal writes the http-01 challenge token there, under .well-known/acme-challenge/, and the ACME directory reads it back through the domains.

It is usually a directory of a volume of the service publishing the domains, the renewal running as a task of that service, where it runs.