ReloadCertificates reloads them in place — useful for ACME/Let’s
Encrypt renewals or rotating compromised material without a restart.
ReloadCertificates
Request (ReloadCertificatesRequest):
| Field | Type | Notes |
|---|---|---|
cert_path | string | Absolute path on the gateway host to the new PEM cert chain. |
key_path | string | Absolute path to the matching PEM private key. |
ReloadCertificatesResponse):
| Field | Type | Notes |
|---|---|---|
status | string | "ok" on success; "error" otherwise. |
error_message | string | Populated when status="error" (e.g. parse failure, mismatched key). |
What changes when
- Existing QUIC connections keep their session tickets; they continue using the certificate they handshook with. No drop.
- New QUIC handshakes (and the next 0-RTT resumption that crosses a TLS context refresh) use the freshly loaded cert.
- Self-signed dev certs: browsers cache
serverCertificateHashes. If you rotate a self-signed cert, every browser tab needs the new fingerprint passed through the SDK constructor.
ACME loop
A typical operator setup runscertbot renew on a cron and follows up
with ReloadCertificates:
<your-rpc-client> is whatever raw QUIC client you build to drive the
admin RPC; nothing in the SDK helps here, by design.
Failure mode
If the new cert/key pair fails validation, the gateway leaves the old material in place and returnsstatus="error". There is no half-loaded
state.