Here are the logs:
WARNING 2024-09-15T23:24:57.137576488Z [resource.labels.containerName: caddy] {"error":"no information found to solve challenge for identifier: www.results-matter.mydomain.app", "host":"www.results-matter.mydomain.app", "level":"warn", "logger":"http", "msg":"looking up info for HTTP challenge", "remote_addr":"10.142.0.131:20386", "ts":1.726442697137304E9, "user_agent":"Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}
DEBUG 2024-09-15T23:24:57.612696280Z [resource.labels.containerName: caddy] {"data":{…}, "id":"d4467e90-e87f-4d33-8e3c-cf45772b2ce3", "level":"debug", "logger":"events", "msg":"event", "name":"tls_get_certificate", "origin":"tls", "ts":1.7264426976124551E9}
DEBUG 2024-09-15T23:24:57.612736930Z [resource.labels.containerName: caddy] {"identifier":"www.results-matter.mydomain.app", "level":"debug", "logger":"tls.handshake", "msg":"no matching certificates and no custom selection logic", "ts":1.7264426976125083E9}
DEBUG 2024-09-15T23:24:57.612805020Z [resource.labels.containerName: caddy] {"level":"debug", "logger":"tls.handshake", "msg":"all external certificate managers yielded no certificates and no errors", "remote_ip":"10.142.0.68", "remote_port":"20515", "sni":"www.results-matter.mydomain.app", "ts":1.7264426976125338E9}
DEBUG 2024-09-15T23:24:57.612810510Z [resource.labels.containerName: caddy] {"domain":"www.results-matter.mydomain.app", "level":"debug", "logger":"tls", "msg":"asking for permission for on-demand certificate", "remote_ip":"10.142.0.68", "ts":1.7264426976125433E9}
DEBUG 2024-09-15T23:24:57.612817100Z [resource.labels.containerName: caddy] {"domain":"www.results-matter.mydomain.app", "level":"debug", "logger":"tls.permission.http", "msg":"asking permission endpoint", "remote":"10.142.0.68:20515", "ts":1.726442697612566E9, "url":"https://mock.httpstatus.io/200?domain=www.results-matter.mydomain.app"}
DEBUG 2024-09-15T23:24:57.922607981Z [resource.labels.containerName: caddy] {"domain":"www.results-matter.mydomain.app", "level":"debug", "logger":"tls.permission.http", "msg":"response from permission endpoint", "remote":"10.142.0.68:20515", "status":200, "ts":1.7264426979223557E9, "url":"https://mock.httpstatus.io/200?domain=www.results-matter.mydomain.app"}
DEBUG 2024-09-15T23:24:57.928128871Z [resource.labels.containerName: caddy] {"error":"no matching certificate to load for www.results-matter.mydomain.app: open /data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/wildcard_.results-matter.mydomain.app/wildcard_.results-matter.mydomain.app.key: no such file or directory", "level":"debug", "logger":"tls.handshake", "msg":"did not load cert from storage", "remote_ip":"10.142.0.68", "remote_port":"20515", "server_name":"www.results-matter.mydomain.app", "ts":1.7264426979278815E9}
INFO 2024-09-15T23:24:57.928186741Z [resource.labels.containerName: caddy] {"level":"info", "logger":"tls.on_demand", "msg":"obtaining new certificate", "remote_ip":"10.142.0.68", "remote_port":"20515", "server_name":"www.results-matter.mydomain.app", "ts":1.7264426979279516E9}
INFO 2024-09-15T23:24:57.942735180Z [resource.labels.containerName: caddy] {"identifier":"www.results-matter.mydomain.app", "level":"info", "logger":"tls.obtain", "msg":"acquiring lock", "ts":1.7264426979424365E9}
INFO 2024-09-15T23:24:57.949721920Z [resource.labels.containerName: caddy] {"identifier":"www.results-matter.mydomain.app", "level":"info", "logger":"tls.obtain", "msg":"lock acquired", "ts":1.726442697949449E9}
INFO 2024-09-15T23:24:57.951427350Z [resource.labels.containerName: caddy] {"identifier":"www.results-matter.mydomain.app", "level":"info", "logger":"tls.obtain", "msg":"obtaining certificate", "ts":1.726442697951062E9}
DEBUG 2024-09-15T23:24:57.951515070Z [resource.labels.containerName: caddy] {"data":{…}, "id":"239d7bc0-6b26-407d-8c61-2d8b4287605d", "level":"debug", "logger":"events", "msg":"event", "name":"cert_obtaining", "origin":"tls", "ts":1.7264426979511807E9}
INFO 2024-09-15T23:24:57.951802590Z [resource.labels.containerName: caddy] {"identifiers":[…], "level":"info", "logger":"tls.issuance.zerossl", "msg":"creating certificate", "ts":1.7264426979516723E9}
INFO 2024-09-15T23:24:58.972826662Z [resource.labels.containerName: caddy] {"cert_id":"d8fd7fff821b189588450d833f86acd8", "identifiers":[…], "level":"info", "logger":"tls.issuance.zerossl", "msg":"created certificate", "ts":1.7264426989725335E9}
INFO 2024-09-15T23:24:58.980807881Z [resource.labels.containerName: caddy] {"cert_id":"d8fd7fff821b189588450d833f86acd8", "identifiers":[…], "level":"info", "logger":"tls.issuance.zerossl", "msg":"validating identifiers", "ts":1.7264426989805207E9, "verification_method":"HTTP_CSR_HASH"}
INFO 2024-09-15T23:24:59.168761406Z [resource.labels.containerName: caddy] {"challenge":"http-01", "distributed":true, "level":"info", "logger":"tls.issuance.zerossl", "msg":"served HTTP validation credential", "remote":"10.142.0.105:46738", "ts":1.7264426991685007E9, "validation_path":"http://www.results-matter.mydomain.app/.well-known/pki-validation/598E1B527935C9B6183D31647AA98856.txt"}
INFO 2024-09-15T23:24:59.807702783Z [resource.labels.containerName: caddy] {"cert_id":"d8fd7fff821b189588450d833f86acd8", "identifiers":[…], "level":"info", "logger":"tls.issuance.zerossl", "msg":"validations succeeded; waiting for certificate to be issued", "ts":1.7264426998073351E9, "verification_method":"HTTP_CSR_HASH"}
INFO 2024-09-15T23:25:00.000626942Z [resource.labels.containerName: caddy] {"challenge":"http-01", "distributed":true, "level":"info", "logger":"tls.issuance.zerossl", "msg":"served HTTP validation credential", "remote":"10.142.0.144:1327", "ts":1.7264427000002463E9, "validation_path":"http://www.results-matter.mydomain.app/.well-known/pki-validation/598E1B527935C9B6183D31647AA98856.txt"}
INFO 2024-09-15T23:25:05.201086620Z [resource.labels.containerName: caddy] {"cert_id":"d8fd7fff821b189588450d833f86acd8", "identifiers":[…], "level":"info", "logger":"tls.issuance.zerossl", "msg":"successfully downloaded issued certificate", "ts":1.7264427052007756E9, "verification_method":"HTTP_CSR_HASH"}
INFO 2024-09-15T23:25:05.233788648Z [resource.labels.containerName: caddy] {"identifier":"www.results-matter.mydomain.app", "issuer":"zerossl", "level":"info", "logger":"tls.obtain", "msg":"certificate obtained successfully", "ts":1.7264427052333343E9}
DEBUG 2024-09-15T23:25:05.234022598Z [resource.labels.containerName: caddy] {"data":{…}, "id":"488e2144-97b5-4dc7-ad49-c140098b0b63", "level":"debug", "logger":"events", "msg":"event", "name":"cert_obtained", "origin":"tls", "ts":1.7264427052337487E9}
INFO 2024-09-15T23:25:05.234088648Z [resource.labels.containerName: caddy] {"identifier":"www.results-matter.mydomain.app", "level":"info", "logger":"tls.obtain", "msg":"releasing lock", "ts":1.726442705233787E9}
DEBUG 2024-09-15T23:25:05.240837978Z [resource.labels.containerName: caddy] {"domain":"www.results-matter.mydomain.app", "expiration":1.7342208E9, "issuer_key":"zerossl", "level":"debug", "logger":"tls", "msg":"loading managed certificate", "storage":"FileStorage:/data/caddy", "ts":1.726442705240562E9}
DEBUG 2024-09-15T23:25:05.446444236Z [resource.labels.containerName: caddy] {"cache_capacity":10000, "cache_size":148, "expiration":1.7342208E9, "hash":"f4ea6660eebd43cd855988d3207acfd51605198734e898a757237682323be014", "issuer_key":"zerossl", "level":"debug", "logger":"tls.cache", "managed":true, "msg":"added certificate to cache", "subjects":[…], "ts":1.7264427054461648E9}
DEBUG 2024-09-15T23:25:05.446531266Z [resource.labels.containerName: caddy] {"data":{…}, "id":"2cddac9e-a121-4bde-a8b2-877da53f95d3", "level":"debug", "logger":"events", "msg":"event", "name":"cached_managed_cert", "origin":"tls", "ts":1.7264427054462643E9}
DEBUG 2024-09-15T23:25:05.446537416Z [resource.labels.containerName: caddy] {"expiration":1.7342208E9, "hash":"f4ea6660eebd43cd855988d3207acfd51605198734e898a757237682323be014", "level":"debug", "logger":"tls.on_demand", "managed":true, "msg":"loaded certificate from storage", "remote_ip":"10.142.0.68", "remote_port":"20515", "subjects":[…], "ts":1.7264427054462774E9}
WARNING 2024-09-15T23:25:05.523740400Z [resource.labels.containerName: caddy] {"error":"no information found to solve challenge for identifier: www.results-matter.mydomain.app", "host":"www.results-matter.mydomain.app", "level":"warn", "logger":"http", "msg":"looking up info for HTTP challenge", "remote_addr":"10.142.0.68:20515", "ts":1.7264427055234458E9, "user_agent":"Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}
DEBUG 2024-09-15T23:25:05.528214250Z [resource.labels.containerName: caddy] {"duration":0.004259599, "headers":{…}, "level":"debug", "logger":"http.handlers.reverse_proxy", "msg":"upstream roundtrip", "request":{…}, "status":200, "ts":1.7264427055279074E9, "upstream":"app.mydomain.com:443"}
DEBUG 2024-09-15T23:25:08.001736306Z [resource.labels.containerName: caddy] {"data":{…}, "id":"a806a12c-fcc9-490d-bdad-817330ff28ab", "level":"debug", "logger":"events", "msg":"event", "name":"tls_get_certificate", "origin":"tls", "ts":1.7264427080014656E9}
DEBUG 2024-09-15T23:25:08.001777036Z [resource.labels.containerName: caddy] {"identifier":"www.results-matter.mydomain.app", "level":"debug", "logger":"tls.handshake", "msg":"no matching certificates and no custom selection logic", "ts":1.7264427080015094E9}
DEBUG 2024-09-15T23:25:08.001839366Z [resource.labels.containerName: caddy] {"level":"debug", "logger":"tls.handshake", "msg":"all external certificate managers yielded no certificates and no errors", "remote_ip":"10.142.0.58", "remote_port":"20238", "sni":"www.results-matter.mydomain.app", "ts":1.726442708001549E9}
DEBUG 2024-09-15T23:25:08.001850446Z [resource.labels.containerName: caddy] {"domain":"www.results-matter.mydomain.app", "level":"debug", "logger":"tls", "msg":"asking for permission for on-demand certificate", "remote_ip":"10.142.0.58", "ts":1.7264427080015585E9}
DEBUG 2024-09-15T23:25:08.001857866Z [resource.labels.containerName: caddy] {"domain":"www.results-matter.mydomain.app", "level":"debug", "logger":"tls.permission.http", "msg":"asking permission endpoint", "remote":"10.142.0.58:20238", "ts":1.7264427080015814E9, "url":"https://mock.httpstatus.io/200?domain=www.results-matter.mydomain.app"}
DEBUG 2024-09-15T23:25:08.201058629Z [resource.labels.containerName: caddy] {"domain":"www.results-matter.mydomain.app", "level":"debug", "logger":"tls.permission.http", "msg":"response from permission endpoint", "remote":"10.142.0.58:20238", "status":200, "ts":1.7264427082008111E9, "url":"https://mock.httpstatus.io/200?domain=www.results-matter.mydomain.app"}
DEBUG 2024-09-15T23:25:08.216632038Z [resource.labels.containerName: caddy] {"domain":"www.results-matter.mydomain.app", "expiration":1.7342208E9, "issuer_key":"zerossl", "level":"debug", "logger":"tls", "msg":"loading managed certificate", "storage":"FileStorage:/data/caddy", "ts":1.726442708216355E9}
DEBUG 2024-09-15T23:25:08.222458168Z [resource.labels.containerName: caddy] {"cache_capacity":10000, "cache_size":143, "expiration":1.7342208E9, "hash":"f4ea6660eebd43cd855988d3207acfd51605198734e898a757237682323be014", "issuer_key":"zerossl", "level":"debug", "logger":"tls.cache", "managed":true, "msg":"added certificate to cache", "subjects":[…], "ts":1.7264427082221744E9}
DEBUG 2024-09-15T23:25:08.222499928Z [resource.labels.containerName: caddy] {"data":{…}, "id":"63123551-4380-48af-ba08-714bd4beea5e", "level":"debug", "logger":"events", "msg":"event", "name":"cached_managed_cert", "origin":"tls", "ts":1.7264427082222638E9}
DEBUG 2024-09-15T23:25:08.222505357Z [resource.labels.containerName: caddy] {"expiration":1.7342208E9, "hash":"f4ea6660eebd43cd855988d3207acfd51605198734e898a757237682323be014", "level":"debug", "logger":"tls.handshake", "managed":true, "msg":"loaded certificate from storage", "remote_ip":"10.142.0.58", "remote_port":"20238", "subjects":[…], "ts":1.7264427082222772E9}
DEBUG 2024-09-15T23:25:08.299405611Z [resource.labels.containerName: caddy] {"duration":0.00519043, "headers":{…}, "level":"debug", "logger":"http.handlers.reverse_proxy", "msg":"upstream roundtrip", "request":{…}, "status":200, "ts":1.7264427082991138E9, "upstream":"app.mydomain.com:443"}
DEBUG 2024-09-15T23:25:13.033471668Z [resource.labels.containerName: caddy] {"data":{…}, "id":"22129faa-bc86-46c8-824a-f48f301144d3", "level":"debug", "logger":"events", "msg":"event", "name":"tls_get_certificate", "origin":"tls", "ts":1.7264427130330725E9}
DEBUG 2024-09-15T23:25:13.033518557Z [resource.labels.containerName: caddy] {"identifier":"www.results-matter.mydomain.app", "level":"debug", "logger":"tls.handshake", "msg":"choosing certificate", "num_choices":1, "ts":1.7264427130331123E9}
DEBUG 2024-09-15T23:25:13.033531128Z [resource.labels.containerName: caddy] {"hash":"f4ea6660eebd43cd855988d3207acfd51605198734e898a757237682323be014", "identifier":"www.results-matter.mydomain.app", "issuer_key":"zerossl", "level":"debug", "logger":"tls.handshake", "managed":true, "msg":"default certificate selection results", "subjects":[…], "ts":1.7264427130331292E9}
DEBUG 2024-09-15T23:25:13.033568038Z [resource.labels.containerName: caddy] {"expiration":1.7342208E9, "hash":"f4ea6660eebd43cd855988d3207acfd51605198734e898a757237682323be014", "level":"debug", "logger":"tls.handshake", "managed":true, "msg":"matched certificate in cache", "remote_ip":"10.142.0.45", "remote_port":"4315", "subjects":[…], "ts":1.726442713033136E9}
DEBUG 2024-09-15T23:25:13.112283882Z [resource.labels.containerName: caddy] {"duration":0.00584007, "headers":{…}, "level":"debug", "logger":"http.handlers.reverse_proxy", "msg":"upstream roundtrip", "request":{…}, "status":200, "ts":1.7264427131120343E9, "upstream":"app.mydomain.com:443"}
DEBUG 2024-09-15T23:25:13.779230294Z [resource.labels.containerName: caddy] {"data":{…}, "id":"14fae680-cc22-4324-ac29-d3f43d21d6a2", "level":"debug", "logger":"events", "msg":"event", "name":"tls_get_certificate", "origin":"tls", "ts":1.7264427137790582E9}
DEBUG 2024-09-15T23:25:13.779238214Z [resource.labels.containerName: caddy] {"identifier":"www.results-matter.mydomain.app", "level":"debug", "logger":"tls.handshake", "msg":"choosing certificate", "num_choices":1, "ts":1.7264427137790806E9}
DEBUG 2024-09-15T23:25:13.779249874Z [resource.labels.containerName: caddy] {"hash":"f4ea6660eebd43cd855988d3207acfd51605198734e898a757237682323be014", "identifier":"www.results-matter.mydomain.app", "issuer_key":"zerossl", "level":"debug", "logger":"tls.handshake", "managed":true, "msg":"default certificate selection results", "subjects":[…], "ts":1.7264427137791078E9}
DEBUG 2024-09-15T23:25:13.779254763Z [resource.labels.containerName: caddy] {"expiration":1.7342208E9, "hash":"f4ea6660eebd43cd855988d3207acfd51605198734e898a757237682323be014", "level":"debug", "logger":"tls.handshake", "managed":true, "msg":"matched certificate in cache", "remote_ip":"10.142.0.158", "remote_port":"6925", "subjects":[…], "ts":1.7264427137791233E9}
DEBUG 2024-09-15T23:25:13.858493069Z [resource.labels.containerName: caddy] {"duration":0.00458932, "headers":{…}, "level":"debug", "logger":"http.handlers.reverse_proxy", "msg":"upstream roundtrip", "request":{…}, "status":200, "ts":1.7264427138581753E9, "upstream":"app.mydomain.com:443"}
i think i know what might be going on. I see ZeroSSL certificates being issued for www.abc.mydomain.com
but not for abc.mydomain.com
. Notice the prefix www
.
I suspect i need a config like this to make my use case work:
{
log default {
level debug
}
on_demand_tls {
ask https://mock.httpstatus.io/200
}
servers {
metrics
strict_sni_host on
}
admin :2020
}
:443 {
reverse_proxy {$UPSTREAMS}
tls {
on_demand
issuer zerossl {$ZEROSSL_API_KEY}
# fallback on letsencrypt if zerossl fails or we hit rate limits
issuer acme "https://acme-v02.api.letsencrypt.org/directory"
}
}
*.mydomain.app:443, *.mydomain.com:443 {
reverse_proxy {$UPSTREAMS}
# Caddy defaults to using Let's Encrypt for on-demand wildcard certificates
tls {
dns googleclouddns {
gcp_project {$GCP_PROJECT}
}
}
}
www.*.mydomain.app:443, www.*.mydomain.com:443 {
redir https://{labels.2}.{labels.1}.{labels.0}{uri}
}
:8080 {
respond /health 200
}
However, Caddy does not seem to be supporting this
www.*.mydomain.app:443, www.*.mydomain.com:443 {
redir https://{labels.2}.{labels.1}.{labels.0}{uri}
}