A major contributor to the Certbot project over the years brought to fruition a proof of concept that accomplishes establishing an ACME (RFC8555) dynamic module for NGINX. This is not currently under active development but any feedback/comments would be appreciated in case this can be picked up again in the near future. Also feel free to fork and play with this.
The README has an extensive overview of architecture, reproducibility, feature checklist, and memory safety. But I will give a short synopsis here as well.
It utilizes the dynamic module to remain an external process and not disrupt the request cycle by working with the Event loop API in NGINX.
Capabilities Listed and Desired Features:
- ACME client
- Account registration
- Obtaining certificates
- Retrying failed orders
- Renewing certificates
- Pushing updates to workers
- Receiving worker configuration
- nginx module
- nginx master process launches ACME client
- ACME HTTP challenge response
- Pushes config to ACME client
- Recurringly pulls certificates from ACME client
- Dynamically uses certificates from ACME client
- Handles reloads.
- Allows configuring the ACME client via
acme_*
directives.
- Build
-
Makefile
anyone can use - Build dynamic module binaries against nginx.org source distributions
- Build dynamic module binaries against Debian/Ubuntu/EPEL source distributions.
-