You have a CNAME for the eta subdomain to Vercel, and they have their own CAA records there.
If I assume you plan to have this subdomain proxied, and the name suggests it is a non-production environment, change to . As you do not have any CAA records on your own domain the cert should validate just fine.
api.eta.dev.grimsyndicate.com has no CAA record so it’ll go back one level to eta.dev.grimsyndicate.com which does have CAA records - which don’t allow Cloudflare to issue the certificate.
As your error says, *.eta.dev.grimsyndicate.com goes back to cname.vercel-dns.com which has globalsign.com and letsencrypt.org as the only ‘allowed’ certificate authorities in the CAA records.
This isn’t an issue on proxied domains since as a byproduct of proxying, that CNAME turns into Cloudflare IPs meaning that recursive lookups don’t ‘follow’ your CNAME to find the CAA records of Vercel.
Your *.dev records aren’t proxied, will follow the CNAME root & will hit CAA records that don’t allow Cloudflare to issue a certificate - this is fully expected behaviour.
It’s likely that you proxied the domain, which removed the CNAME, and therefore allowed certificate issuance.
Cloudflare’s proxy answers DNS queries with their own IP addresses so that traffic hits Cloudflare - since your CNAME is no-longer present, resolvers will no-longer follow the CNAME chain. If they did see the CNAME and follow it, they’d reach Vercel’s CAA records.
If so, the name server includes the CNAME
record in the response and restarts the query at the domain name
specified in the data field of the CNAME record.
A lookup on lws.dev.grimsyndicate.com becomes a lookup on cname.vercel-dns.com - and cname.vercel-dns.com returns the CAA records that are preventing issuance.
I’ll be honest with you… this is going a bit over my head…
I’m trying to solve this scenario.
I have a front-end site hosted on Vercel: eta.dev.grimsyndicate.com. They generate their own SSL for the front end
Then a back-end api hosted on Digital Ocean: api.eta.dev.grimsyndicate.com. I have my own SSL generated by LetsEncrypt
How can I have everything proxied and fully encrypted through Cloudflare?
The DNS entries are currently . To use the Cloudflare proxy they need to be . But this is not what Vercel recommend. But other people on the Community have far more experience using Vercel and Cloudflare together.
Yeah, the problem is that CNAME proxy doesn’t work with subdomains more than 1 level deep… I’ll see if I can find the documentation where I saw that, but that was the case 3 months ago when I created the lws setup
@michael I just enabled the proxy on eta.dev.grimsyndicate.com, changed the CNAME to an A (like the article that you shared mentioned, and now I’m getting this error…
A wildcard certificate for *.example.com does not match the hostname example.com. This is why most wildcard certificates usually have two SANs, one for *.example.com and one for example.com.
Your cert would cover blah.eta.dev.grimsyndicate.com, but not eta.dev.grimsyndicate.com.
You can request a new ACM certificate that includes the required SANs.