Why Certificate Lifecycle Automation Matters

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • certmaster

    Automatically renew certs and install to destinations

  • Shameless plug: I've built a tool that automatically generates certs and uploads to destinations. https://github.com/poundifdef/certmaster

    It uses Lego under the hood to issue certs, and then has custom connectors to upload to destinations. Right now those are email, sftp, and hetzner load balancers.

    I'm working on adding the ability for it to automatically renew and re-upload when certs are 30 days from expiration.

  • acme.sh

    A pure Unix shell script implementing ACME client protocol

  • Huh, the environment variable thing was specifically aimed at acme.sh which rather arbitrarily changed the config value from ACMEDNS_UPDATE_URL to ACMEDNS_BASE_URL, never acknowledged this in a changelog and then silently failed after an automatic upgrade as recommended by the default install:

    https://github.com/acmesh-official/acme.sh/commit/2ce145f359...

    It's also cleared out my .account.conf files when run on the suggested cron.

    I've started using updown which also monitors my TLS certs simply because I no longer trust the process to work as documented.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • getssl

    obtain free SSL certificates from letsencrypt ACME server Suitable for automating the process on remote servers.

  • A 'competitor' to this would be GetSSL which is a pure-shell ACME client (plus OpenSSL and cURL) and can be executed on one host, but send verification tokens to remote systems (where you may not have cron access):

    > Get certificates for remote servers - The tokens used to provide validation of domain ownership, and the certificates themselves can be automatically copied to remote servers (via ssh, sftp or ftp for tokens). The script doesn't need to run on the server itself. This can be useful if you don't have access to run such scripts on the server itself, as it's a shared server for example.

    * https://github.com/srvrco/getssl

  • lexicon

    Manipulate DNS records on various DNS providers in a standardized way.

  • A reminder that if you an internal-only server where the typical http-01' verification connection method will not work, especially if you cannot easily/dynamically update DNS records, one can use dns-01* by using DNS aliasing/CNAME:

    * https://dan.langille.org/2019/02/01/acme-domain-alias-mode/

    * https://www.eff.org/deeplinks/2018/02/technical-deep-dive-se...

    So if you want a cert for www.internal.example.com, you will first have do a one-time change to have a _acme-challenge.www.internal… CNAME created to point to any other (sub-)domain where you can easily update things dynamically, e.g., www-internal.example-dnsapi.com.

    When request the cert for "www.internal…", LE/ACME will look up the corresponding _acme-challenge record, and go to "_acme-challenge.www-internal.example-dnsapi.com. The nonce token will be there in the 'final' destination following the CNAME in a TXT, which shows LE/ACME that you control the DNS chain.

    To do the DNS updating, you can use a CLI/Python library like Lexicon, which supports dozens of APIs:

    * https://github.com/AnalogJ/lexicon

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts