Corriger les erreurs SSL du sous-domaine www Fly.io avec Cloudflare (Erreur 525)

Fred· AI Engineer & Developer Educator4 min read

Vous avez deploye votre app sur Fly.io et le domaine racine fonctionne bien, mais www.votresite.com lance une erreur de handshake SSL ? Vous n'etes pas seul. Cette erreur 525 arrive parce que Fly.io necessite des certificats SSL separes pour chaque nom d'hote - et la plupart des guides de deploiement sautent completement cette etape.

Voici la correction, testee et verifiee sur un deploiement de production.

Le probleme

Vous avez deploye sur Fly.io, ajoute votre domaine personnalise, et tout semble bon. Puis vous essayez de visiter www.votresite.com et vous obtenez :

Error 525: SSL handshake failed

Pendant ce temps, votresite.com (sans www) fonctionne bien. Que se passe-t-il ?

Pourquoi cela arrive

Fly.io utilise Let's Encrypt pour provisionner les certificats SSL, mais voici le piege : ajouter un certificat pour example.com ne couvre PAS automatiquement www.example.com.

Ils sont traites comme des noms d'hote completement separes. Vous devez explicitement ajouter un certificat pour le sous-domaine www.

La solution (5 etapes)

Etape 1 : Installer Fly.io CLI

Si vous ne l'avez pas deja fait, installez flyctl :

# Installer flyctl
curl -L https://fly.io/install.sh | sh

# Ajouter au PATH
export FLYCTL_INSTALL="$HOME/.fly"
export PATH="$FLYCTL_INSTALL/bin:$PATH"

# Rendre permanent (ajouter a ~/.bashrc ou ~/.zshrc)
echo 'export FLYCTL_INSTALL="$HOME/.fly"' >> ~/.bashrc
echo 'export PATH="$FLYCTL_INSTALL/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

# Verifier que ca fonctionne
flyctl version

Etape 2 : Verifier vos certificats actuels

D'abord, voyez quels certificats vous avez deja :

flyctl certs list -a VOTRE_NOM_APP

Vous verrez probablement quelque chose comme :

Host Name                 Added                Status
example.com              1 month ago          Ready
api.example.com          1 month ago          Ready

Remarquez ce qui manque ? Le sous-domaine www.

Etape 3 : Ajouter le certificat www (ceci corrige le probleme)

Voici la commande critique qui resout le probleme :

flyctl certs add www.example.com -a VOTRE_NOM_APP

Fly.io provisionne automatiquement un certificat SSL Let's Encrypt pour votre sous-domaine www.

Etape 4 : Verifier que le certificat est pret

Attendez 1-2 minutes, puis verifiez le statut du certificat :

flyctl certs show www.example.com -a VOTRE_NOM_APP

Cherchez "Status: Ready". S'il dit "Awaiting certificates", attendez encore une minute et reverifiez.

Etape 5 : Configurer le mode SSL/TLS Cloudflare

Cette etape est critique si vous utilisez Cloudflare pour le DNS (ce que vous devriez faire).

  1. Connectez-vous a votre tableau de bord Cloudflare
  2. Selectionnez votre domaine
  3. Allez a SSL/TLSOverview
  4. Definissez le mode de chiffrement sur "Full" (pas "Flexible" ou "Full (strict)")

Pourquoi "Full" ?

  • Flexible : Cloudflare utilise HTTPS pour vos visiteurs, mais HTTP vers Fly.io (non securise, cause des problemes)
  • Full : Cloudflare utilise HTTPS pour les visiteurs et vers Fly.io (correct)
  • Full (strict) : Necessite une autorite de certification de confiance, mais Fly.io gere ses propres certificats (cause des erreurs)

Configurer vos enregistrements DNS (Cloudflare)

Assurez-vous que vos enregistrements DNS sont configures correctement :

Domaine racine (example.com) :

  • Type : A ou AAAA
  • Nom : @ (ou laisser vide)
  • Contenu : Votre adresse IP Fly.io (depuis flyctl ips list)
  • Statut proxy : Proxied (nuage orange active)

Sous-domaine www (www.example.com) :

  • Type : CNAME
  • Nom : www
  • Cible : example.com (pointe vers le domaine racine)
  • Statut proxy : Proxied (nuage orange active)

Le nuage orange (Proxied) est important - il route le trafic a travers le CDN de Cloudflare et active le SSL.

Tester tout

Verifiez que les deux domaines fonctionnent :

# Tester le domaine racine
curl -I https://example.com

# Tester le sous-domaine www
curl -I https://www.example.com

Les deux devraient retourner HTTP/2 200 (ou HTTP/1.1 200). Si vous obtenez des erreurs, voyez la section depannage ci-dessous.

Pourquoi les certificats separes comptent

Dans l'hebergement mutualise traditionnel, un certificat SSL wildcard (*.example.com) couvre tous les sous-domaines. Mais Fly.io provisionne les certificats individuellement via Let's Encrypt.

Cela vous donne plus de controle mais necessite une configuration explicite pour chaque sous-domaine :

  • example.com → a besoin de son propre certificat
  • www.example.com → a besoin de son propre certificat
  • api.example.com → a besoin de son propre certificat
  • blog.example.com → a besoin de son propre certificat

Vous comprenez l'idee.

Conclusion

Le probleme de certificat SSL du sous-domaine www Fly.io est l'un de ces "pieges" qui fait trebucher meme les developpeurs experimentes. La correction est simple une fois que vous la connaissez :

  1. Ajoutez un certificat separe pour www : flyctl certs add www.example.com -a VOTRE_NOM_APP
  2. Definissez le SSL/TLS Cloudflare sur le mode "Full"
  3. Attendez 1-2 minutes que le certificat soit pret
  4. Testez les deux domaines

C'est tout. Pas de configuration complexe, pas de redemarrages de serveur, pas d'edition de fichiers de configuration. Juste une commande que la plupart des guides de deploiement oublient de mentionner.

Maintenant vos utilisateurs peuvent acceder a votre site avec ou sans www, et les deux fonctionneront correctement.


Guides connexes :

Fred

Fred

AUTHOR

Full-stack developer with 10+ years building production applications. I've been deploying to Cloudflare's edge network since Workers launched in 2017.

Need a developer who gets it?

POC builds, vibe-coded fixes, and real engineering. Let's talk.

Hire Me →