Aller au contenu

Outil gratuit

Comment s'écrit ce nom de domaine en Punycode ?

Le DNS ne transporte que de l'ASCII : « hôtel.example » y circule sous la forme « xn--htel-vqa.example », et c'est cette forme-là qu'il faut saisir dans une zone DNS, un certificat ou un enregistrement MX. Collez un nom dans un sens ou dans l'autre : les deux formes s'affichent, étiquette par étiquette, avec la longueur et les caractères qui imitent une lettre latine.

Le texte que vous collez est décodé par votre navigateur. Il ne part sur aucun serveur, pas même le nôtre : ni le certificat, ni la demande, ni le nom de domaine.

Les deux contrôles que fait cet outil en plus de la conversion

La longueur d'abord : un nom accentué grossit en s'encodant, et « crème-brûlée » passe de douze à vingt-deux caractères. Au-delà de 63, l'étiquette ne peut pas être enregistrée, et on ne le découvre qu'au moment de la commande. Les caractères sosies ensuite : un « а » cyrillique se lit comme un « a » latin, et c'est avec ce genre de substitution qu'on enregistre un nom qui ressemble au vôtre. Une conversion seule ne dit rien de tout cela.

Un nom qui ressemble au vôtre se surveille

Un faux nom de domaine ne sert à rien tant qu'il dort. Il devient un problème le jour où il porte un serveur de courrier, un certificat et une page de connexion qui recopie la vôtre. Ces trois événements sont visibles depuis l'extérieur, et ce sont eux que DomainVigil surveille sur les domaines qu'on lui confie — l'apparition d'un certificat, d'un MX, d'un changement de serveurs de noms.

Le mécanisme

Deux noms, un seul est écrit en lettres latines

Le DNS ne transporte que de l'ASCII, et c'est cette traduction invisible qui rend les sosies possibles. Les deux lignes ci-dessous s'affichent de la même façon dans n'importe quelle police. Une seule est écrite avec l'alphabet que vous croyez lire.

Lequel des deux ne contient que des lettres latines ?

Le premier

example.com

Le second

exаmple.com

Prenez le temps de regarder. Zoomez si vous voulez : aucune des deux lignes ne trahit quoi que ce soit à l'œil.

Les deux noms appartiennent à example.com, réservé aux démonstrations. Pour convertir le vôtre, utilisez le champ en haut de page.

Ce que l'écran ne montre pas

L'œil n'est pas une preuve.

Deux noms de domaine peuvent s'afficher exactement pareil. Leurs formes ASCII, elles, diffèrent — et c'est celle-là que les machines lisent.

  • 21caractères sosies signalés
  • 63caractères par étiquette, une fois encodée
  • 253caractères pour le nom entier

Lire le résultat

Les deux formes sont affichées à égalité, parce que celle dont vous avez besoin dépend de l'endroit où vous allez la coller. La table du dessous explique le résultat, étiquette par étiquette.

Forme Unicode, forme ASCII
Le même nom, écrit deux fois. La forme Unicode est celle que lit un humain ; la forme ASCII est celle que transporte le DNS. Elles désignent exactement le même enregistrement : ce ne sont pas deux domaines, et il n'y a rien à enregistrer deux fois.
Étiquette par étiquette
Un nom de domaine ne s'encode pas d'un bloc mais partie par partie, entre les points. C'est pourquoi « café.fr » devient « xn--caf-dma.fr » et non « xn--café.fr » : seule l'étiquette qui porte l'accent est encodée, le suffixe reste tel quel.
Longueur dépassée
La colonne des longueurs compte les caractères de la forme ASCII, la seule qui compte pour le DNS. Au-delà de 63 pour une étiquette, ou de 253 pour le nom entier, l'enregistrement est impossible — et l'encodage en ajoute presque toujours.
Mélange d'écritures
Une étiquette qui mêle des lettres latines et cyrilliques, ou latines et grecques, n'est jamais un nom légitime : c'est la technique du faux nom de domaine. La colonne « écriture » nomme celles qui sont présentes.
Caractères sosies
Certains caractères d'une autre écriture ont le dessin d'une lettre latine. Ils sont signalés sous l'étiquette avec leur point de code Unicode et la lettre qu'ils imitent. Un nom entièrement écrit dans une seule autre écriture est valide et légitime la plupart du temps ; c'est son usage pour copier un nom latin qui ne l'est pas.
Rien à convertir
Le nom est déjà en ASCII et ne porte pas de préfixe xn--. Les deux formes sont alors identiques, et les contrôles de forme continuent de s'appliquer — un tiret bas ou un tiret en fin d'étiquette sont signalés dans tous les cas.

Les cinq erreurs qui viennent d'un nom internationalisé

Elles se ressemblent toutes : quelque part dans la chaîne, un logiciel attendait l'ASCII et a reçu de l'Unicode.

  1. La zone DNS refuse le nom accentué

    Ce qui la provoque : Les interfaces d'hébergeur n'encodent pas toujours ce qu'on leur donne. Le champ attend un nom d'hôte, donc de l'ASCII, et un « é » y est simplement invalide.

    Le geste qui corrige : Collez la forme ASCII, celle qui commence par xn--. Elle est équivalente : l'enregistrement créé répondra bien pour le nom accentué.

  2. L'autorité refuse d'émettre le certificat pour le nom accentué

    Ce qui la provoque : Le champ dNSName d'un certificat est une chaîne IA5, c'est-à-dire de l'ASCII (RFC 5280 § 4.2.1.6). Un nom accentué n'y entre pas tel quel.

    Le geste qui corrige : Mettez la forme ASCII dans la demande. Le certificat couvrira le nom accentué, puisque c'est le même nom — et le décodeur de CSR de cette famille d'outils vous montrera ce que la demande porte vraiment.

  3. Le nom encodé dépasse la longueur admise

    Ce qui la provoque : L'encodage ajoute le préfixe xn-- et une suite de caractères pour chaque signe non-ASCII. Un nom de cinquante caractères avec quatre accents dépasse facilement 63 une fois encodé.

    Le geste qui corrige : Vérifiez la colonne des longueurs avant de commander le nom. La seule issue est de raccourcir l'étiquette : la limite de 63 est dans le protocole, aucun registre ne la contourne.

  4. Le courrier part vers un domaine accentué mais n'arrive pas

    Ce qui la provoque : Le nom dans l'enregistrement MX et dans l'enveloppe SMTP doit être en ASCII. Un serveur d'envoi qui transmet la forme Unicode obtient un nom introuvable.

    Le geste qui corrige : Publiez et référencez la forme ASCII partout : dans le MX, dans le SPF, dans le DKIM. L'affichage de la forme accentuée est une affaire d'interface, pas de transport.

  5. Un client dit avoir reçu une facture d'un domaine « qui nous ressemble »

    Ce qui la provoque : Un nom voisin a été enregistré en remplaçant une lettre par un caractère d'une autre écriture qui a le même dessin, ou en changeant un seul caractère latin.

    Le geste qui corrige : Collez le nom exact reçu par le client dans cet outil : la forme ASCII et les caractères signalés montrent immédiatement que ce n'est pas votre domaine. Gardez la forme ASCII, c'est elle qui sert à faire une réclamation.

Les pièges d'un nom internationalisé

Neuf cas, tous rencontrés en production, avec la règle qui les gouverne.

Le piègeCe qui se passeCe qu'on fait
Le préfixe xn--Il marque une étiquette encodée (RFC 5891 § 4.2.3.1). Ce qui suit n'est pas du texte lisible mais le résultat d'un calcul.Ne jamais le modifier à la main : un seul caractère changé, et l'étiquette ne se décode plus.
La longueur après encodageL'étiquette grossit : « crème-brûlée » fait douze caractères et vingt-deux une fois encodée.Vérifier la colonne des longueurs. La limite est de 63 par étiquette et 253 pour le nom entier (RFC 1035 § 2.3.4).
Deux écritures dans une étiquette« аpple » écrit avec un « а » cyrillique s'affiche comme « apple ». Le nom paraît juste et désigne autre chose.Se méfier de tout mélange latin-cyrillique ou latin-grec : aucun nom légitime n'en a besoin.
Les caractères sosiesUne vingtaine de caractères cyrilliques et grecs ont le dessin exact d'une lettre latine.Comparer la forme ASCII, pas l'affichage. Deux noms qui se ressemblent à l'œil ont des formes ASCII très différentes.
Les deux façons d'écrire un accent« é » s'écrit soit en un caractère, soit en « e » suivi d'un accent combinant. Les deux s'affichent pareil.Rien à faire : l'IDNA impose la forme composée (NFC) avant l'encodage, et cet outil l'applique. Les deux saisies donnent donc le même xn--.
Les majusculesUn nom de domaine est insensible à la casse, mais l'encodage ne l'est pas : il faut passer en minuscules d'abord.Rien à faire non plus : la mise en minuscules est appliquée avant l'encodage, comme l'exige la RFC 5891 § 4.2.
Le tiret aux extrémitésUne étiquette ne peut ni commencer ni finir par un tiret.Corriger le nom. Ce cas apparaît souvent après une troncature automatique.
Le tiret basLe DNS l'accepte pour un enregistrement de service (_dmarc, _acme-challenge), pas pour un nom d'hôte.Le retirer d'un nom destiné à porter un site ou un certificat.
Le point final« example.com. » avec un point final est la forme absolue, valide dans un fichier de zone.Le retirer avant de comparer deux noms : cet outil l'ignore, beaucoup d'autres logiciels non.

Les caractères sosies les plus utilisés

Ce sont exactement ceux que l'outil signale. Chaque ligne donne le caractère, son point de code Unicode et la lettre latine dont il a le dessin.

CaractèrePoint de codeLa lettre qu'il imite
аU+0430 — a cyrilliquea
еU+0435 — e cyrilliquee
оU+043E — o cyrilliqueo
рU+0440 — er cyrilliquep
сU+0441 — es cyrilliquec
уU+0443 — u cyrilliquey
хU+0445 — ha cyrilliquex
іU+0456 — i ukrainieni
ѕU+0455 — dze cyrilliques
јU+0458 — je cyrilliquej
һU+04BB — shha cyrilliqueh
ԁU+0501 — komi ded
ӏU+04CF — palotchka cyrilliquel
οU+03BF — omicron greco
αU+03B1 — alpha greca
εU+03B5 — epsilon grece
ρU+03C1 — rhô grecp
νU+03BD — nu grecv
ɡU+0261 — g scripteg
ıU+0131 — i sans pointi
ǀU+01C0 — clic dentall

La liste n'est pas exhaustive : Unicode en recense des milliers dans sa table des confusables. Celle-ci retient les caractères effectivement employés pour copier un nom de domaine latin, et c'est elle que l'outil applique.

Questions fréquentes

Qu'est-ce que le Punycode ?

Un encodage qui écrit n'importe quelle chaîne Unicode avec les seuls caractères admis dans un nom de domaine : lettres non accentuées, chiffres et tiret (RFC 3492). Une étiquette ainsi encodée reçoit le préfixe xn--, ce qui permet de la reconnaître. C'est ce mécanisme qui autorise les noms accentués sans rien changer au DNS lui-même, qui n'a jamais transporté que de l'ASCII.

Pourquoi mon domaine accentué s'affiche-t-il en xn-- dans certains logiciels ?

Parce que ces logiciels affichent ce que le protocole transporte, sans le décoder. C'est le cas de beaucoup d'interfaces d'administration, de journaux de serveur et de clients de courrier. Certains navigateurs le font aussi volontairement quand une étiquette mélange des écritures : afficher la forme brute est alors le seul moyen de montrer que le nom n'est pas celui qu'il paraît.

Faut-il enregistrer les deux formes d'un nom accentué ?

Non, ce sont deux écritures du même nom : « xn--htel-vqa.example » EST « hôtel.example », le même enregistrement, la même zone, le même certificat. En revanche, la version sans accent est un autre nom, qu'il faut enregistrer à part si on veut l'avoir — et c'est souvent celui que les visiteurs tapent.

Un certificat peut-il couvrir un nom accentué ?

Oui, sous sa forme ASCII. Le champ dNSName d'un certificat est une chaîne IA5, donc limitée à l'ASCII (RFC 5280 § 4.2.1.6) : c'est la forme xn-- qui y figure, et les navigateurs comparent le nom de la barre d'adresse après l'avoir encodée de la même façon. Un certificat qui porte la forme accentuée en clair est mal formé.

Comment repérer un faux nom de domaine qui imite le mien ?

En comparant les formes ASCII, jamais l'affichage. Deux noms qui se ressemblent à l'œil peuvent avoir des formes ASCII totalement différentes, et c'est le signe qui ne trompe pas : si le nom reçu se convertit en quelque chose qui commence par xn--, il contient au moins un caractère non latin. Cet outil signale aussi le mélange d'écritures dans une même étiquette, qui n'arrive jamais par hasard.

La conversion est-elle réversible ?

Oui, exactement : l'algorithme de la RFC 3492 est bijectif sur les étiquettes valides, et le décodage rend la chaîne d'origine caractère pour caractère. C'est vérifiable sur cette page : convertissez un nom accentué, puis recollez la forme obtenue, vous retombez sur le nom de départ.

L'affichage et le transport

Ce qu'on lit, ce qui est enregistré

Six cas où l'écran et la zone ne disent pas la même chose. À gauche ce qui s'affiche, à droite ce que l'encodage en fait.

« аpple » écrit avec un « а » cyrillique s'affiche comme « apple ».

Le nom paraît juste et désigne autre chose. Sa forme ASCII commence par xn-- : les deux noms n'ont plus rien en commun.

« café.fr » porte un accent, donc son encodage doit être « xn--café.fr ».

Un nom s'encode étiquette par étiquette, entre les points : c'est « xn--caf-dma.fr », et le suffixe reste tel quel.

« crème-brûlée » fait douze caractères, largement sous la limite.

Vingt-deux une fois encodée. La limite de 63 se mesure sur la forme ASCII, jamais sur ce qu'on tape.

« é » est « é » : il n'y a qu'une façon de l'écrire.

Il y en a deux : un caractère unique, ou « e » suivi d'un accent combinant. L'IDNA impose la forme composée avant l'encodage, et les deux saisies donnent le même xn--.

Un nom de domaine est insensible à la casse : les majuscules ne changent rien.

À l'usage, non. À l'encodage, si : la mise en minuscules est appliquée d'abord, comme l'exige la RFC 5891 § 4.2.

« example.com. » et « example.com » sont le même nom.

Oui, et le point final est la forme absolue d'un fichier de zone. Cet outil l'ignore ; beaucoup d'autres logiciels non.

La question qui revient

Faut-il enregistrer les deux formes d'un nom accentué ?

Non

Ce sont deux écritures du même nom. « xn--htel-vqa.example » EST « hôtel.example » : le même enregistrement, la même zone, le même certificat. Il n'y a rien à créer deux fois, et rien à renouveler deux fois.

Trois choses à ne pas confondre

La version sans accent

« hotel.example » est un autre nom, à enregistrer à part si on le veut. Et c'est souvent celui que les visiteurs tapent.

Le nom écrit dans une autre écriture

Une étiquette qui mêle latin et cyrillique n'est jamais légitime. Celui-là appartient à quelqu'un d'autre, et c'est sa forme ASCII qui sert à faire une réclamation.

La forme à coller partout

Dans une zone, un MX, un SPF, une demande de certificat : la forme ASCII. L'affichage accentué est une affaire d'interface, pas de transport.