branches: front dns
Clone
clone: git://shithub.us/ori/acmed gits://shithub.us/ori/acmed
push: hjgit://shithub.us/ori/acmed
patches to: ori@eigenstate.org
Last commit
6e12ebe0
– Ori Bernstein <ori@eigenstate.org>
authored
on 2021/09/22 19:27
manpage: update
About
ACMED(8) ACMED(8)
NAME
acmed - acme certificate client
SYNOPSIS
acmed [ -o outdir ] [ -p provider ] [ -a acctkey ] [ [ e
chalcmd ] [ w chaldir ] acctname csr
DESCRIPTION
Acmed fetches and renews TLS certificates using the acme
protocol. It requires a pregenerated account key and cer-
tificate signing key.
There are a number of options.
-o outdir Specifies that the signed certificate is placed
in outdir in place of the default /sys/lib/tls/acme/.
-p provider Specifies that provider is used as the pro-
vider URL, in place of the default https://acme-
v02.api.letsencrypt.org/directory. This must be the
directory URL for the desired RFC8555 compliant pro-
vider
-a acctkey Specifies that acctkey is used to sign requests
to the provider in place of the default
/sys/lib/tls/acme/$acctname.pub. The key must be a jwk
formatted RSA key.
c csrkey Specifies that csrkey is used to produce the CSR
sent to provider in place of the default
/sys/lib/tls/acme/$domain.key. The key must be a plan 9
formatted RSA key suitable for aux/rsa2csr.
w chaldir Specifies that the challenge is written out to
chaldir. For HTTP challenges, this defaults to
/usr/web/.well-known/acme-challenge/.
EXAMPLES
Before acmed is run, the keys must be generated.
auth/rsagen -t 'service=acme role=sign hash=sha256 acct=me@example.org' \
| tee >{auth/rsa2jwk \
>/sys/lib/tls/acmed/me@example.org.pub}
| ipso -r -l factotum
auth/rsagen -t 'service=tls owner=*' \
| tee >{auth/rsa2csr 'CN=mydomain.com' \
>/sys/lib/tls/acmed/mydomain.com.csr} \
| ipso -r -l factotum
This need only be run once.
The certificate for the domain can now be fetched:
acmed me@example.org mydomain.com \
>/sys/lib/tls/acmed/mydomain.com.crt
SOURCE
/sys/src/cmd/$somewhere/acmed.c
BUGS
Acmed only supports HTTP challenges that placed in static
directories. It should add support for DNS challenges, and
provide a way for a script to be invoked while handling
them.