Certificat SSL pour domaine avec accent

Si toi aussi t'es un énorme débile, voici comment faire un certificat SSL pour un domaine avec un accent.

Comprendre les IDN

Un nom de domaine avec accent (comme café.fr ou réseau.com) est appelé IDN (Internationalized Domain Name). Ces domaines utilisent le format Punycode pour être compatibles avec le système DNS.

⚠️ Important à comprendre Un domaine comme café.fr est en réalité converti en xn--caf-dma.fr au niveau DNS. C'est cette version Punycode que tu dois utiliser pour la configuration SSL.
1

Convertir ton domaine en Punycode

Avant toute chose, tu dois connaître la version Punycode de ton domaine. Utilise Python pour la conversion :

python3 -c "print('café.fr'.encode('idna').decode('ascii'))"

Ou utilise un outil en ligne comme Punycoder.com

📝 Exemples de conversions
  • café.fr → xn--caf-dma.fr
  • réseau.com → xn--rseau-bva.com
  • français.net → xn--franais-xxa.net
2

Configuration DNS

Chez ton registrar, tu configures normalement avec les accents. Par exemple :

Configuration DNS (chez ton registrar)
  • Type A : café.fr → Ton IP VPS
  • Type A : www.café.fr → Ton IP VPS

Le registrar s'occupe automatiquement de la conversion Punycode au niveau DNS.

3

Installation et configuration Nginx

Sur ton VPS Ubuntu, installe Nginx si ce n'est pas déjà fait :

sudo apt update && sudo apt install nginx -y

Crée un fichier de configuration Nginx. Attention : utilise la version Punycode dans le nom du fichier :

sudo nano /etc/nginx/sites-available/xn--caf-dma.fr

Contenu du fichier (remplace xn--caf-dma.fr par ton domaine Punycode) :

server { listen 80; listen [::]:80; server_name xn--caf-dma.fr www.xn--caf-dma.fr; root /var/www/xn--caf-dma.fr/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } }

Crée le répertoire pour ton site :

sudo mkdir -p /var/www/xn--caf-dma.fr/html
sudo chown -R $USER:$USER /var/www/xn--caf-dma.fr/html

Active le site et teste la configuration :

sudo ln -s /etc/nginx/sites-available/xn--caf-dma.fr /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
4

Installation de Certbot

Installe Certbot pour obtenir un certificat SSL gratuit de Let's Encrypt :

sudo apt install certbot python3-certbot-nginx -y
5

Obtenir le certificat SSL (la partie critique)

C'est ici que ça change ! Utilise UNIQUEMENT la version Punycode dans la commande Certbot :

⚠️ ATTENTION N'utilise PAS la version avec accent dans la commande Certbot, ça ne fonctionnera pas. Utilise SEULEMENT le Punycode.
sudo certbot --nginx -d xn--caf-dma.fr -d www.xn--caf-dma.fr

Certbot va :

  • Vérifier ton domaine via un challenge HTTP-01
  • Obtenir le certificat SSL
  • Modifier automatiquement ta configuration Nginx
  • Configurer la redirection HTTPS
💡 Renouvellement automatique Certbot installe automatiquement un cron job pour renouveler tes certificats. Tu peux tester le renouvellement avec :
sudo certbot renew --dry-run
6

Vérification finale

Vérifie que tout fonctionne correctement :

  • Accède à http://café.fr (avec accent dans le navigateur)
  • Tu devrais être automatiquement redirigé vers https://café.fr
  • Le certificat SSL doit être valide (cadenas vert)
✅ Succès ! Les navigateurs modernes gèrent automatiquement la conversion Punycode. Tes visiteurs peuvent taper l'URL avec les accents, et tout fonctionne !

Pour vérifier les détails de ton certificat :

sudo certbot certificates
7

Troubleshooting

Problèmes courants et solutions :

🔧 Erreur "Domain name does not match"

Cause : Tu as utilisé la version avec accent dans Certbot.

Solution : Supprime les certificats incorrects et recommence avec le Punycode :

sudo certbot delete
🔧 Le site ne charge pas en HTTPS

Vérifie que le firewall autorise le port 443 :

sudo ufw allow 'Nginx Full'
🔧 Erreur DNS

Attends la propagation DNS (peut prendre jusqu'à 48h). Vérifie avec :

dig xn--caf-dma.fr
🎉 Résumé de la procédure
  1. Convertis ton domaine avec accent en Punycode
  2. Configure ton DNS normalement (avec accent) chez ton registrar
  3. Sur le VPS, utilise TOUJOURS le Punycode dans :
    • Les noms de fichiers Nginx
    • Les directives server_name
    • Les commandes Certbot
  4. Les navigateurs gèrent automatiquement la conversion pour tes visiteurs