lacme-accountd(1)
π lacme-accountd β the account key manager bestie π
okay so quick vibe check: this is the manual page for lacme-accountd, and it lives in General Commands Manual land, section 1. She's the account key manager half of the whole lacme situation and honestly? she's serving. let's get into it π«Ά
β¨ NAME β¨
lacme-accountd β ACME client written with process isolation and minimal privileges in mind (account key manager) π
πΈ SYNOPSIS πΈ
lacme-accountd [--config=FILENAME] [--privkey=ARG] [--socket=PATH]
[--quiet]
π DESCRIPTION π
okay so lacme-accountd is literally the account key manager component of lacme(8), which is a small ACME client written with process isolation and minimal privileges in mind. and the way that nobody else in the lacme(8) fam ever needs to touch the account key? iconic. fr fr, the account key could honestly live on a whole other host, or on a smartcard, and it would still be fine π₯
lacme-accountd binds to a UNIX-domain socket (you pick it with --socket=), and ACME clients connect to that socket to request data signatures. which means β and listen bestie, this is the important part β lacme-accountd has to be up and running first, before you can use lacme(8) to issue ACME commands. no socket, no signatures, no slay π
also she's not the type to ghost after one request: the process does not automatically terminate after the last signature request. instead, you send an INT or TERM signal(7) to bring the server down. like, you have to actually say goodbye π
and ooh, here's the cute part: you can use the UNIX-domain socket forwarding facility of OpenSSH 6.7 and later to run lacme-accountd and lacme(8) on different hosts. so you could store the account key on a machine that is not exposed to the internet β main character security energy honestly. there's an example down in the examples section, keep scrolling π
β¨ OPTIONS β¨
--config=filenameβ use filename as the configuration file instead of%E/lacme/lacme-accountd.conf. the value is subject to %-specifier expansion.lacme-accountdfails when--config=is used with a non-existent file, but a non-existent default location is treated as if it were an empty file. see the configuration file section below for the config options π--privkey=valueβ pick the (private) account key used for signing requests. currently supported values are:file:FILE, for a private key in PEM format (optionally symmetrically encrypted)gpg:FILE, for agpg(1)-encrypted private key
FILE is subject to %-specifier expansion.
the genpkey(1ssl) command can be used to generate a new private (account) key:
$ install -vm0600 /dev/null /path/to/account.key
$ openssl genpkey -algorithm RSA -out /path/to/account.key
heads up bestie: currently lacme-accountd only supports RSA account keys π
--socket=pathβ use path as the UNIX-domain socket to bind to for signature requests from the ACME client. the value is subject to %-specifier expansion.lacme-accountdaborts if path exists or if its parent directory is writable by other users. Default:%t/S.lacme(so omitting--socket=therefore yields an error whenlacme-accountddoesn't run as and theXDG_RUNTIME_DIRenvironment variable is unset or empty) π--stdioβ read signature requests from the standard input and write signatures to the standard output, instead of using a UNIX-domain socket for communication with the ACME client. this is an internal flag and should never be used by standalonelacme-accountdinstances β only for thoselacme(8)spawns π-h,--helpβ display a brief help and exit.-q,--quietβ be quiet. π€«--debugβ turn on debug mode.
π CONFIGURATION FILE π
when given on the command line, the --privkey=, --socket= and --quiet options take precedence over their counterpart (without leading --) in the configuration file. valid settings are:
privkeyβ see--privkey=. this setting is required when--privkey=is not specified on the command line.gpgβ for agpg(1)-encrypted private account key, specify the binarygpg(1)to use, as well as some default options. Default:gpg --quiet.socketβ see--socket=.logfileβ an optional file where to log to. the value is subject to %-specifier expansion.keyidβ the "Key ID", as shown by`acme account`, to give the ACME client. with an emptykeyid(the default) the client forwards the JSON Web Key (JWK) to the ACME server to retrieve the correct value. a non-empty value therefore saves a round-trip βοΈ
a non-empty value also causes lacme-accountd to send an empty JWK, thereby revoking all account management access (status change, contact address updates etc.) from the client: any `acme account` command (or any command from lacme(8) before version 0.8.0) is bound to be rejected by the ACME server. this provides a safeguard against malicious clients π‘οΈ
quietβ be quiet. possible values:Yes/No.
π¦ %-SPECIFIERS π¦
the value the --config=, --privkey= and --socket= CLI options (and also the privkey, socket and logfile settings from the configuration file) are subject to %-expansion for the following specifiers:
%Cβ/var/cachefor the root user, and$XDG_CACHE_HOMEfor other users (or$HOME/.cacheif theXDG_CACHE_HOMEenvironment variable is unset or empty).%Eβ/etcfor the root user, and$XDG_CONFIG_HOMEfor other users (or$HOME/.configif theXDG_CONFIG_HOMEenvironment variable is unset or empty).%gβ current group name.%Gβ current group ID.%hβ home directory of the current user.%tβ/runfor the root user, and$XDG_RUNTIME_DIRfor other users. non-root users may only use%twhen theXDG_RUNTIME_DIRenvironment variable is set to a non-empty value.%Tβ$TMPDIR, or/tmpif theTMPDIRenvironment variable is unset or empty.%uβ current user name.%Uβ current user ID.%%β a literal%.
π EXAMPLES π
run lacme-accountd in a first terminal:
$ lacme-accountd --privkey=file:/path/to/account.key --socket=$XDG_RUNTIME_DIR/S.lacme
then, while lacme-accountd is running, execute locally lacme(8) in another terminal:
$ sudo lacme --socket=$XDG_RUNTIME_DIR/S.lacme newOrder
alternatively, use OpenSSH 6.7 or later to forward the socket and execute lacme(8) remotely:
$ ssh -oExitOnForwardFailure=yes -tt -R /path/to/remote.sock:$XDG_RUNTIME_DIR/S.lacme user@example.org \
sudo lacme --socket=/path/to/remote.sock newOrder
consult the lacme(8) manual for a solution involving connecting to lacme-accountd on a dedicated remote host. doing so enables automatic renewal via crontab(5) or systemd.timer(5) β°
π BUGS AND FEEDBACK π
bugs or feature requests for lacme-accountd should be filed with the Debian project's bug tracker at <https://www.debian.org/Bugs/>. (yes bestie, we know, we know.)
π SEE ALSO π
π AUTHORS π
Guilhem Moulin
and that's the whole page, no cap π this waslacme-accountd(1), March 2016 vintage, from the General Commands Manual era, and she ate. now go start that socket before you runlacmebestie, fr fr πβ¨
π¦ where this page comes from
- ubuntu stonking: lacme-accountd 0.8.4-2 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms