Expand description
ACME-based TLS provisioning for ApplicationNode.
Provides automatic TLS certificate provisioning via the ACME protocol
(RFC 8555), with support for HTTP-01 challenges. Certificates are stored
in the platform Storage trait and auto-renewed 30 days before expiry.
See spec section 18.6.3 for the full design:
- ACME HTTP-01 challenge: served at
/.well-known/acme-challenge/<token> - DNS-01 alternative: for environments where port 80 is unavailable (NAT, shared hosting). Operator configures DNS TXT records manually or via DNS API. (Documented here for reference; not implemented in this module.)
- Certificate storage: PEM-encoded cert chain and private key stored in
platform
Storage, encrypted at rest by the storage backend. - Auto-renewal: background task renews 30 days before expiry.
- TLS 1.3 required: per section 9.13, all relay connections use TLS 1.3.
Structs§
- Acme
Provider - ACME certificate provider for automatic TLS provisioning.
- Cert
Resolver - A certificate resolver that supports hot-swapping certificates.
- Certificate
Data - PEM-encoded certificate chain and private key.
Enums§
- TlsError
- Errors produced by TLS provisioning.
Functions§
- acme_
challenge_ router - Create an axum router that serves ACME HTTP-01 challenge responses.
- build_
reloadable_ tls_ config - Build a reloadable TLS configuration with a
CertResolverthat supports hot-swapping certificates without restarting the server. - build_
tls_ server_ config - Build a
rustls::ServerConfigenforcing TLS 1.3 (spec section 9.13). - generate_
self_ signed - Generate a self-signed certificate for the given domain.
- serve_
tls - Serves an axum router over TLS using the provided
rustls::ServerConfig.