One server holds three certificate types at the same time. On every handshake it reads the trust_anchors extension in the ClientHello and picks which one to send on the fly — your connection just took the path highlighted below.
Matched a landmark ID or landmark group usable for this certificate. Sends a landmark-relative certificate without cosignatures — usually the smallest total size.
Matched this MTC CA's CA ID or group, but no usable landmark-relative certificate. Sends a standalone certificate carrying an inclusion proof and enough cosignatures.
No acceptable MTC trust anchor matched, including missing extension or no match. Sends a traditional X.509 chain, compatible with existing clients.
How one server holds a landmark-relative certificate, a standalone certificate and a classic X.509 chain at the same time — and picks the right one for every client inside this TLS 1.3 handshake, with no extra round trips.
1-RTT · fallback never adds a round trip · no HelloRetryRequest
per draft-ietf-plants-merkle-tree-certs-05
trust_anchors?Note: this demo environment trusts the standalone certificate — if the ClientHello carries trust_anchors, the server sends standalone.
Reference OIDs for the CAs, logs and cosigner behind this demo's MTC certificates.
| Entity | Relative OID | Full OID | Notes |
|---|---|---|---|
| 7-day CA | 44494.3.1.1 | 1.3.6.1.4.1.44494.3.1.1 | Certs ≤ 7 days, revocation-exempt class |
| 47-day CA | 44494.3.1.2 | 1.3.6.1.4.1.44494.3.1.2 | Certs ≤ 47 days, revocation via CQRP |
| 7-day log #1 | 44494.3.1.1.0.1 | 1.3.6.1.4.1.44494.3.1.1.0.1 | Checkpoint origin oid/1.3.6.1.4.1.44494.3.1.1.0.1 |
| 47-day log #1 | 44494.3.1.2.0.1 | 1.3.6.1.4.1.44494.3.1.2.0.1 | Checkpoint origin oid/1.3.6.1.4.1.44494.3.1.2.0.1 |
| Mirror cosigner | 44494.3.2.1 | 1.3.6.1.4.1.44494.3.2.1 | Signed-note name oid/1.3.6.1.4.1.44494.3.2.1 |
MTC-enabled ACME client: https://github.com/trustasia-com/acme.sh/tree/feat/mtc-certificate-support
MTC CA staging environment: https://acme.mtc-staging.trustasia.com/acme/v2/directory
Merkle Tree Certificates (MTC) is an experimental draft from the IETF PLANTS working group: a CA batches certificates into a Merkle tree, so issuance only needs the hash path from a leaf to the root. Compared with traditional X.509 signature chains, verification is cheaper and certificates can be far smaller — a natural fit for post-quantum signatures with large public keys. This demo implements the draft-05 X.509-compatible envelope and the TLS 1.3 negotiation extension.