ACME-CLIENT.CONF(5)
π acme-client.conf(5) β the file formats manual, bestie edition π
okay so you're here because you've got an acme-client.conf file and you want to know what goes in it. say less β this is the <italic>file formats manual</italic> for acme-client.conf, and we're gonna go through it together, section by section, no cap. π¦
β¨ NAME β¨
acme-client.conf β the acme-client configuration file. that's it, that's the name, she's iconic π
πΈ DESCRIPTION πΈ
the acme-client.conf file is split into these main sections, and yes you need to know all of them:
- βMacrosβ β definitions of variables that you can use later, which keeps the config file from being a whole mess. lowkey a lifesaver π«Ά
- βAuthoritiesβ β certificate authorities (CAs) that can be contacted via ACME.
- βDomainsβ β certificate specifications. the actual good stuff.
you can pull in extra config files with the include keyword, like literally:
include "/etc/acme-client.sub.conf"
the current line can be stretched over multiple lines using a backslash (\). comments can go anywhere in the file with a hash mark (#), and they run to the end of the current line. β οΈ but be careful when you're commenting out multi-line text: the comment is effective until the end of the entire block β so yeah, it eats the whole thing, not just one line. π
also: arguments that don't begin with a letter, a digit, an underscore, or / must be quoted. no exceptions, bestie, the parser is not playing around.
π§ Macros
a macro gets defined with a command like name=value. the macro name can contain letters, digits, and underscores β but it cannot be a reserved word, so don't try it. π inside unquoted arguments, the string $name gets expanded to value later on.
for example, look how clean this is:
api_url="https://acme-v02.api.letsencrypt.org/directory"
authority letsencrypt {
api url $api_url
account key "/etc/acme/letsencrypt-privkey.pem"
}
see how $api_url just slots in? obsessed. β¨
π Authorities
these are the configured certificate authorities.
each authority section starts with a declaration of the name that identifies a certificate authority.
authority name {...} the name is a string used to reference this certificate authority.
then it's followed by a block of options wrapped in curly brackets:
account key file [keytype]β specifies a file used to identify the user of this certificate authority.keytypecan bersaorecdsa, and it defaults torsa.api url urlβ specifies theurlunder which the ACME API is reachable.contact contactβ optional contact URLs that the authority can use to contact the client about issues related to this account. π«Ά
π¦ Domains
these are the certificates to be obtained through ACME.
domain handle {...} each domain section begins with the domain keyword followed by an identifier for this domain block. usually that identifier is the domain name β but if you're requesting certificates of different types (EC and RSA) for the same name, the handle identifiers should be unique and you should use the domain name directive instead. iykyk π
then comes a block of options in curly brackets:
domain name nameβ the name to be used as the primary Subject Alternative Name (SAN) in the X.509 certificate. this is optional; if you don't specify it, the handle of the domain block gets used instead.alternative names {...}β a list of additional names, comma or space separated, for which the certificate will be valid. if the CA and the selected profile support it, you can use fully qualified domain names, IPv4, or IPv6 addresses. π there is no automatic conversion/inclusion between the"www."form and the plain domain name form β so don't assume, write it out.domain key file [keytype]β the private key file for which the certificate will be obtained.keytypecan bersaorecdsa, and it defaults torsa. if the key file doesn't exist,acme-client(1)will generate a key itself (4096-bit forrsaorsecp384r1forecdsa). she's self-sufficient πdomain certificate fileβ the filename of the certificate that will be issued. this is optional ifdomain full chain certificateis specified. a backup with namefile.1is created iffileexists.domain chain certificate fileβ the filename in which to store the certificate chain that will be returned by the certificate authority. it needs to be in the same directory as thedomain certificate(or in a subdirectory) and can be specified as a relative or absolute path. this setting is optional. a backup with namefile.1is created iffileexists.domain full chain certificate fileβ the filename in which to store the full certificate chain that will be returned by the certificate authority. it needs to be in the same directory as thedomain certificate(or in a subdirectory) and can be specified as a relative or absolute path. this is a combination of thedomain certificateand thedomain chain certificatein one file, and most browsers straight up require it. this is optional ifdomain certificateis specified. a backup with namefile.1is created iffileexists. π₯profile profileβ the certificate profile to be requested. if this setting is absent, no profile request is made.sign with authorityβ the certificate authority (as declared above in the βAuthoritiesβ section) to use. if this setting is absent, the first authority specified is used.challengedir pathβ the directory in which the challenge file will be stored. if it's not specified, a default of/var/www/acmeis used.
π FILES π
/etc/acme-client.confβacme-client(1)configuration file./etc/examples/acme-client.confβ example configuration file. (go look at it, fr fr π)
π SEE ALSO π
β HISTORY β
the acme-client.conf file format first appeared in OpenBSD 6.1. she's been serving since day one, periodt. π
πΈ and that's the whole page, bestie β go write a config that slays. π
this was the Debian build of acme-client.conf(5), dated February 23, 2026 β mwah, bye! ππ
π¦ where this page comes from
- alpine 3.24: acme-client-doc 1.3.7-r0 Β· GPL-2.0-only
- nixos 26.05: acme-client 1.3.7
- nixpkgs unstable: acme-client 1.3.8
- Copyright (c) 2005 Esben Norby <norby@openbsd.org>
- Copyright (c) 2004 Claudio Jeker <claudio@openbsd.org>
- Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
- Copyright (c) 2002 Daniel Hartmeier <dhartmei@openbsd.org>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms