Hello Caddy community! I’m looking for some clarification about the behavior of the “trust_pool file” directive. I’ve read over the relevant documentation which I’ve linked in section #4 and the behavior is still unclear to me. I’m hoping a Caddy expert can help me get to the bottom of this.
1. The problem:
I’m upgrading my Caddy deployment by a few major versions and replacing the deprecated trusted_ca_cert_file
directive with the new trust_pool file
syntax. My original configuration looks like this:
tls /etc/caddy/certs/dev-pub-wildcard-cert.cert /etc/caddy/certs/dev-pub-wildcard-cert.key {
client_auth {
mode require_and_verify
# Intermediate then Root (order is important here)
trusted_ca_cert_file /etc/caddy/certs/new_dev_int_ca_combo.pem
trusted_ca_cert_file /etc/caddy/certs/wildstar_combo.cert
}
}
Both new_dev_int_ca_combo.pem
and wildstar_combo.cert
are “combo” files that include an intermediate CA and its corresponding root CA. I’ve rewritten this as:
tls /etc/caddy/certs/dev-pub-wildcard-cert.cert /etc/caddy/certs/dev-pub-wildcard-cert.key {
client_auth {
mode require_and_verify
# Intermediate then Root (order is important here)
trust_pool file {
pem_file /etc/caddy/certs/new_dev_int_ca_combo.pem
pem_file /etc/caddy/certs/wildstar_combo.cert
}
}
}
What I really need help with is understanding the behavior of the new trust_pool
directive. I am assuming that this config will behave in the exact same way that the previous config does. Can someone please confirm or deny my assumption?
My understanding is that, just like two trusted_ca_cert_file
entries, this trust_pool file
block should accept a client whose certificate chain is signed by either of those bundled CAs. If instead it requires both CAs to be presented in the same chain, what’s the correct way to configure trust_pool
so that a single combo-CA bundle will suffice?
2. Caddy version:
v2.10.0
3. How I installed and ran Caddy:
a. System environment:
RHEL 8 w/ FIPS Mode enabled
Running as systemd service
b. Command:
sudo systemctl enable caddy --now
c. Relevant Caddy config:
tls /etc/caddy/certs/dev-pub-wildcard-cert.cert /etc/caddy/certs/dev-pub-wildcard-cert.key {
client_auth {
mode require_and_verify
# Intermediate then Root (order is important here)
trust_pool file {
pem_file /etc/caddy/certs/new_dev_int_ca_combo.pem
pem_file /etc/caddy/certs/wildstar_combo.cert
}
}
}
4. Links to relevant resources:
Official documentation about “trust_pool file”
tls (Caddyfile directive) — Caddy Documentation