Hi everyone,
I know this has come up before, but now that Let’s Encrypt issues leaf-level wildcards I still can’t see the blocker to also offering name-constrained subordinate CAs for the same namespace. Technically it’s the same validation you already perform for a *.example.com
wildcard—the sole difference is the Basic Constraints and Name Constraints extensions you set when signing.
Right now I have to copy one wildcard key to every host and rotate it every 90 days. A Let’s Encrypt–signed sub-CA limited to example.com
(pathLen = 0, DNSName = *.example.com) would let me run my own tiny ACME server internally and let every host grab short-lived leaf certs on demand. I’d still renew the sub-CA every 90 days, but the per-host keys would stay on the hosts that generated them.
That brings obvious wins:
- No key-sharing: each machine holds only its own private key.
- Smaller incident blast radius: compromise of one endpoint no longer exposes a domain-wide wildcard.
- Cleaner automation: certbot (or any client) keeps working exactly as today, just pointed at an internal CA.
“But subordinate CAs are scary—what if they issue for other names?”
The fix is the Name Constraints you already support for third-party intermediates. A sub-CA limited to example.com
literally cannot sign google.com
, even if its key is stolen, because modern clients reject a path that violates DNSName constraints. For older clients that ignore Name Constraints you can also set pathLen = 0 so the sub-CA cannot create another sub-CA and escape the constraint.
“We’d lose Certificate Transparency for the leaf certs.”
All current CT policies only mandate logging the intermediate; leaf logging is nice but not required. You already accept that risk for any leaf wildcard. The security model is identical: if the sub-CA key leaks, you revoke the sub-CA and every descendant leaf becomes untrusted in the same single OCSP response—exactly what happens today when a wildcard key leaks. Additionally it would make the use of self issued leaf certificates for internal only websites possible because they would not be exposed (known) over the CT Log to outside the company and trigger a security issue with that.
“People can already solve this with multiple leaf certs.”
True, but only by copying one private key (or an ACME account key) to every host, which many security teams explicitly forbid. A name-constrained sub-CA means zero private-key distribution and a far cleaner separation of duties.
Concrete ask: expose a new ACME certificate profile "subca-wildcard"
that:
- Requires the same DNS-01 validation you already run for leaf wildcards.
- Issues a subordinate CA certificate with
pathLen = 0
andNameConstraints: DNS = *.example.com, example.com
. - Retains the same lifetime, so the global revocation window is no larger than today.
From the perspective of a relying party, the risk delta versus a leaf wildcard is essentially zero, while for operators the security and operational gains are substantial. I hope we can reconsider this small but powerful extension to Let’s Encrypt’s service.
I hope we can have a productive conversation about what is currently against it and what would need to be done to implement something like this so that it can be done.
Kind Regards Xyz00777