bionic (1) lacme.1.gz

Provided by: lacme_0.4-1_all bug

NAME

       lacme - ACME client written with process isolation and minimal privileges in mind

SYNOPSIS

       lacme [--config=FILENAME] [--socket=PATH] [OPTION ...] COMMAND [ARGUMENT ...]

DESCRIPTION

       lacme  is  a  small  ACME  client  written  with process isolation and minimal privileges in mind.  It is
       divided into four components, each with its own executable:

       1. A lacme-accountd(1) process to manage the account key and issue SHA-256  signatures  needed  for  each
          ACME  command.   (This  process  binds to a UNIX-domain socket to reply to signature requests from the
          ACME client.) One can use the UNIX-domain socket forwarding facility of OpenSSH 6.7 and later  to  run
          lacme-accountd(1)  and  lacme on different hosts.  Alternatively, the lacme-accountd(1) process can be
          spawned by the “master” lacme process below; in that case, the two  processes  communicate  through  a
          socket pair.

       2. A  “master” lacme process, which runs as root and is the only component with access to the private key
          material of the server keys.  It is used to fork the ACME client (and optionally the  ACME  webserver)
          after  dropping  root  privileges.   For  certificate  issuances (new-cert command), it also generates
          Certificate Signing Requests, then verifies the validity of the  issued  certificate,  and  optionally
          reloads or restarts services when the notify option is set.

       3. An  actual ACME client (specified with the command option of the [client] section of the configuration
          file), which builds ACME commands and dialogues with the remote ACME server.  Since ACME commands need
          to be signed with the account key, the “master” lacme process passes the lacme-accountd(1) UNIX-domain
          socket to the ACME client: data signatures are requested by writing the  data  to  be  signed  to  the
          socket.

       4. For certificate issuances (new-cert command), an optional webserver (specified with the command option
          of the [webserver] section of the configuration file), which is spawned by the “master”  lacme.   (The
          only  challenge  type  currently  supported  by lacme is http-01, which requires a webserver to answer
          challenges.)    That   webserver   only    processes    GET    and    HEAD    requests    under    the
          /.well-known/acme-challenge/ URI.  Moreover temporary iptables(8) rules can be automatically installed
          to open the HTTP port.

COMMANDS

       lacme [--agreement-uri=URI] new-reg [CONTACT ...]
              Register the account key managed by lacme-accountd(1).  A list of  CONTACT  information  (such  as
              maito:  URIs) can be specified in order for the server to contact the client for issues related to
              this registration (such as notifications about server-initiated revocations).

              --agreement-uri= can be used to specify a URI referring to a  subscriber  agreement  or  terms  of
              service  provided  by  the  server;  adding this options indicates the client's agreement with the
              referenced terms.  Note that the server might require the client to agree to subscriber  agreement
              before performing any further actions.

              If  the  account  key is already registered, lacme prints the URI of the existing registration and
              aborts.

       lacme [--agreement-uri=URI] reg=URI [CONTACT ...]
              Dump or edit the registration URI (relative to the ACME server URI, which is  specified  with  the
              server option of the [client] section of the configuration file).

              When  specified,  the  list of CONTACT information and the agreement URI are sent to the server to
              replace the existing values.

       lacme [--config-certs=FILE] [--min-days=INT] new-cert [SECTION ...]
              Read the certificate configuration FILE (see the certificate configuration file section below  for
              the  configuration options), and request new Certificate Issuance for each of its sections (or the
              given list of SECTIONs).

       lacme revoke-cert FILE [FILE ...]
              Request that the given certificate(s) FILE(s) be revoked.  For this command, lacme-accountd(1) can
              be pointed to either the account key or the server's private key.

GENERIC OPTIONS

       --config=filename
              Use   filename  as  configuration  file.   See  the  configuration  file  section  below  for  the
              configuration options.

       --socket=path
              Use path as the lacme-accountd(1) UNIX-domain socket to connect to for signature requests from the
              ACME  client.   lacme  aborts  if  path  is  readable or writable by other users, or if its parent
              directory is writable by other users.  This command-line option overrides the socket option of the
              [client]   section  of  the  configuration  file.   Moreover  this  option  is  ignored  when  the
              configuration file has an [accountd] section; in that case lacme spawns lacme-accountd(1), and the
              two processes communicate through a socket pair.

       -h, --help
              Display a brief help and exit.

       -q, --quiet
              Be quiet.

       --debug
              Turn on debug mode.

CONFIGURATION FILE

       If  --config=  is  not  given,  lacme  uses  the  first  existing  configuration file among ./lacme.conf,
       $XDG_CONFIG_HOME/lacme/lacme.conf  (or  ~/.config/lacme/lacme.conf  if  the  XDG_CONFIG_HOME  environment
       variable is not set), and /etc/lacme/lacme.conf.  Valid options are:

   DEFAULT SECTION
       config-certs
              For  certificate  issuances  (new-cert  command),  specify the space-separated list of certificate
              configuration files or directories to use (see the certificate configuration  file  section  below
              for the configuration options).

              Paths  not  starting with / are relative to the directory name of the configuration filename.  The
              list of files and directories is processed in order,  with  the  later  items  taking  precedence.
              Files  in  a directory are processed in lexicographic order, only considering the ones with suffix
              .conf.

              Default: lacme-certs.conf lacme-certs.conf.d/.

   [client] SECTION
       This section is used for configuring the ACME client (which takes care of  ACME  commands  and  dialogues
       with the remote ACME server).

       socket See  --socket=.   Default: $XDG_RUNTIME_DIR/S.lacme if the XDG_RUNTIME_DIR environment variable is
              set.

       user   The username to drop  privileges  to  (setting  both  effective  and  real  uid).   Preserve  root
              privileges if the value is empty (not recommended).  Default: nobody.

       group  The  groupname  to  drop  privileges to (setting both effective and real gid, and also setting the
              list of supplementary gids to that single group).  Preserve root privileges if the value is  empty
              (not recommended).  Default: nogroup.

       command
              Path to the ACME client executable.  Default: /usr/lib/lacme/client.

       server Root URI of the ACME server.  Default: https://acme-v01.api.letsencrypt.org/.

       timeout
              Timeout  in seconds after which the client stops polling the ACME server and considers the request
              failed.  Default: 10.

       SSL_verify
              Whether to verify the server certificate chain.  Default: Yes.

       SSL_version
              Specify the version of the SSL protocol used to transmit data.

       SSL_cipher_list
              Specify the cipher list for the connection, see ciphers(1ssl) for more information.

   [webserver] SECTION
       This section is used to configure how ACME challenge responses are served during certificate issuance.

       listen Comma- or space-separated list of addresses to  listen  on.   Valid  addresses  are  of  the  form
              IPV4:PORT,  [IPV6]:PORT  (where the :PORT suffix is optional and defaults to the HTTP port 80), or
              an   absolute   path   of   a   UNIX-domain   socket   (created   with   mode   0666).    Default:
              /var/run/lacme-www.socket.

              Note:  The  default  value is only suitable when an external HTTP daemon is publicly reachable and
              passes all ACME challenge requests to the  webserver  component  through  the  UNIX-domain  socket
              /var/run/lacme-www.socket   (for   instance   using   the   provided   /etc/lacme/apache2.conf  or
              /etc/lacme/nginx.conf configuration snippets for each virtual host requiring  authorization).   If
              there  is  no  HTTP  daemon bound to port 80 one needs to set listen to [::] (or 0.0.0.0 [::] when
              dual IPv4/IPv6 stack is disabled or unavailable), and possibly also set iptables to Yes.

       challenge-directory
              Specify a non-existent directory under which an external HTTP daemon is configured  to  serve  GET
              requests  for  challenge files under /.well-known/acme-challenge/ (for each virtual host requiring
              authorization) as static files.  This option is required when listen is empty.

       user   The username to drop  privileges  to  (setting  both  effective  and  real  uid).   Preserve  root
              privileges if the value is empty (not recommended).  Default: www-data.

       group  The  groupname  to  drop  privileges to (setting both effective and real gid, and also setting the
              list of supplementary gids to that single group).  Preserve root privileges if the value is  empty
              (not recommended).  Default: www-data.

       command
              Path  to  the ACME webserver executable.  A separate process is spawned for each address to listen
              on.  (In particular no webserver process is forked when the  listen  option  is  empty.)  Default:
              /usr/lib/lacme/webserver.

       iptables
              Whether  to automatically install temporary iptables(8) rules to open the ADDRESS[:PORT] specified
              with listen.  The rules are automatically removed once lacme exits.  Default: No.

   [accountd] SECTION
       This section is used for configuring the  lacme-accountd(1)  process.   If  the  section  (including  its
       header)  is  absent or commented out, lacme connects to an existing UNIX-domain socket bound by a running
       lacme-accountd(1) process.

       user   The username to drop  privileges  to  (setting  both  effective  and  real  uid).   Preserve  root
              privileges if the value is empty.

       group  The  groupname  to  drop  privileges to (setting both effective and real gid, and also setting the
              list of supplementary gids to that single group).  Preserve root privileges if the value is empty.

       command
              Path to the lacme-accountd(1) executable.  Default: /usr/bin/lacme-accountd.

       config Path to the lacme-accountd(1) configuration file.  Default: /etc/lacme/lacme-accountd.conf.

       privkey
              The (private) account key to use for signing requests.  See lacme-accountd(1) for details.

       quiet  Be quiet.  Possible values: Yes/No.

CERTIFICATE CONFIGURATION FILE

       For certificate issuances (new-cert command),  a  separate  file  is  used  to  configure  paths  to  the
       certificate  and  key,  as  well  as  the  subject, subjectAltName, etc.  to generate Certificate Signing
       Requests.  Each section denotes a separate certificate issuance.  Valid options are:

       certificate
              Where to store  the  issued  certificate  (in  PEM  format).   At  least  one  of  certificate  or
              certificate-chain is required.

       certificate-chain
              Where  to  store  the  issued  certificate,  concatenated  with  the content of the file specified
              specified  with  the  CAfile  option  (in  PEM  format).   At  least   one   of   certificate   or
              certificate-chain is required.

       certificate-key
              Path  the  service's  private key.  This option is required.  The following command can be used to
              generate a new 4096-bits RSA key in PEM format with mode 0600:

                     openssl genrsa 4096 | install -m0600 /dev/stdin /path/to/srv.key

       min-days
              For an existing certificate, the minimum number of days before its expiration date the section  is
              considered  for  re-issuance.   A  negative  value  forces  reissuance,  while the number 0 limits
              reissuance to expired certificates.  Default: the value of the CLI option  --min-days,  or  21  if
              there is no such option.

       CAfile Path  to  the issuer's certificate.  This is used for certificate-chain and to verify the validity
              of each issued certificate.  Specifying an empty  value  skip  certificate  validation.   Default:
              /usr/share/lacme/lets-encrypt-x3-cross-signed.pem.

       hash   Message digest algorithm to sign the Certificate Signing Request with.

       keyUsage
              Comma-separated list of Key Usages, see x509v3_config(5ssl).

       subject
              Subject      field     of     the     Certificate     Signing     Request,     in     the     form
              /type0=value0/type1=value1/type2=....  This option is required.

       subjectAltName
              Comma-separated list of Subject Alternative Names, in the form type0:value1,type1:value1,type2:...
              The only type currently supported is DNS, to specify an alternative domain name.

       chown  An optional username[:groupname] to chown the issued certificate and certificate-chain to.

       chmod  An optional octal mode to chmod the issued certificate and certificate-chain to.

       notify Command  to  pass the the system's command shell (/bin/sh -c) after successful installation of the
              certificate and/or certificate-chain.

EXAMPLES

              ~$ sudo lacme new-reg mailto:noreply@example.com
              ~$ sudo lacme reg=/acme/reg/123456 --agreement-uri=https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf
              ~$ sudo lacme new-cert
              ~$ sudo lacme revoke-cert /path/to/server/certificate.pem

BUGS AND FEEDBACK

       Bugs or  feature  requests  for  lacme  should  be  filed  with  the  Debian  project's  bug  tracker  at
       <https://www.debian.org/Bugs/>.

SEE ALSO

       lacme-accountd(1)

AUTHORS

       Guilhem Moulin (mailto:guilhem@fripost.org).

                                                  December 2015                                         lacme(1)