Custom domain SSL certificate not serving at edge despite showing as “Issued” - 8+ hours
Description:
I’m experiencing a critical issue where my custom domain app.snapshot.so has a valid SSL certificate (shows as “Issued” in fly certs show) but the Fly.io edge proxy is not serving it, resulting in TLS handshake failures for 8+ hours.
App Details:
-
App name:
receiptx-api-staging -
Custom domain:
app.snapshot.so -
Region:
sin(Singapore) -
Machine ID:
568344ea407018
DNS Configuration:
CNAME app.snapshot.so → receiptx-api-staging.fly.dev (DNS only, no proxy)
CNAME _acme-challenge.app.snapshot.so → app.snapshot.so.9lnwpwx.flydns.net
Certificate Status:
bash
$ fly certs show app.snapshot.so -a receiptx-api-staging
Status = Issued
Hostname = app.snapshot.so
Certificate Authority = Let’s Encrypt
Issued = rsa,ecdsa
Added to App = 8 hours ago
Expires = 2 months from now
✓ Certificate is verified and active
Error Observed:
bash
$ curl -vvv https://app.snapshot.so/health
* Connected to app.snapshot.so (66.241.124.93) port 443
* LibreSSL/3.3.6: error:1404B42E:SSL routines:ST_CONNECT:tlsv1 alert protocol version
curl: (35) LibreSSL/3.3.6: error:1404B42E:SSL routines:ST_CONNECT:tlsv1 alert protocol version
What Works:
-
Direct
.fly.devdomain works perfectly:bash$ curl https://receiptx-api-staging.fly.dev/health{“status”:“ok”}
-
Both domains resolve to the same IP:
66.241.124.93 -
App is running and healthy
-
Certificate validation completed successfully
What I’ve Tried:
-
Removed and re-added the certificate 3 times
-
Changed DNS from A record to CNAME
-
Added ACME challenge CNAME record (
_acme-challenge.app) -
Restarted the Fly.io machine multiple times
-
Waited 8+ hours for edge propagation
-
Verified DNS propagation globally
Root Cause Analysis: The certificate is valid and issued by Let’s Encrypt, but the edge proxy’s SNI routing table hasn’t synced the TLS binding for app.snapshot.so. The edge receives the connection but fails during TLS handshake, indicating the certificate isn’t being presented for this hostname despite showing as “Issued” in the control plane.
Impact:
-
Custom domain completely unreachable via HTTPS
-
Production application down for users
-
OAuth callbacks failing
-
Revenue loss (users cannot complete purchases)
Request: Please investigate the edge proxy configuration for this custom domain and force a refresh of the TLS certificate binding. This appears to be a platform-level issue with the edge routing layer not syncing with the control plane certificate status.
Additional Diagnostics:
bash
$ openssl s_client -connect app.snapshot.so:443 -servername app.snapshot.so
# Returns: Verify return code: 0 (ok) but connection fails before certificate exchange
Thank you for your urgent assistance.