Technology · Protocol

ACME

Automated certificate issuance keeps my services' TLS current without a human in the loop, in the agent runtime and the access plane.

Auth and access plane · Agent SwarmCertificate issuanceMinting crates in Rust
Certificate lives, back to back
Web frontsHTTP-01 at the proxy
Mesh routerDNS-01, minted in Rust
Agent containersmounted at launch
each segment one certificate's life · illustrative
  • 46lines of Python in the HTTP-01 challenge responder
  • 2challenge types, picked per surface
  • 2issuance backends behind one interface

Renewing the web fronts without me

Auth and access plane serves an OAuth authorization server, MCP gateways and webhook intake to the internet from an estate with no open inbound ports. Every one of those surfaces sits behind an NGINX TLS front, and I wanted each certificate to renew without me.

I chose ACME's HTTP-01 challenge for the web fronts, where a proxy already answers on port 80, and answered it on the same proxy path that carries real traffic.

Real traffic
NGINX TLS front
authorization server
client
port 443
The HTTP-01 challenge
NGINX TLS front
challenge responder
ACME CA
port 80
Issuance travels the route a client does, so a renewal also proves the route.

The front it serves is the template for the rest, and that pattern is on the Zero-inbound network exposure page.

The template every front inherits
TLS 1.2 and 1.3 onlyHSTS with preloadsecurity headersown rate-limit zone
Each surface leaves on its own outbound tunnel
OAuth authorization server
MCP gateways
Webhook intake, cut alone
Cutting one tunnel leaves the others untouched.

Minting certificates inside the agent runtime

Agent Swarm had a different problem. Agent containers and the mesh router need TLS material, their certificates belong to services with no public web front that could answer a challenge, and nobody should copy private keys between hosts.

I chose DNS-01 and wrote minting into the runtime as Rust crates. The ACME crate cleans up its challenge record on every exit, because stale challenge records otherwise pile up in the zone without anyone noticing; a failed issuance that leaves records behind becomes a slow leak.

How long the challenge TXT record lives
Issuance succeeds
deleted
Issuance fails
deleted
The delete fails
warning
A failed delete is logged, never ignored. Lengths are illustrative.

One interface, and no key in any image

A second crate issues through the edge provider's certificate API, and both backends sit behind one interface, so code that consumes a certificate does not care which authority signed it.

Either authority signs
public ACME CA
edge provider's API
one issuance interface
A container at launch
image layersmounted certificate

Minted certificates are mounted into containers at launch and never sit in an image, so rebuilding an image can never ship a key. The internal CA the message bus trusts is covered on the TLS and mTLS page.

I treat certificate issuance as part of the platform.

I used existing ACME clients and the standard protocol; I did not write an ACME client or run a public CA.