bitlvl
IT

Convertitore Punycode / IDN

Scrivi un dominio con lettere non ASCII per ottenere la forma che il DNS usa davvero, o incolla un nome xn-- per vedere cosa dice. Ogni etichetta è mostrata separatamente.

I risultati e i messaggi di questo strumento sono mostrati in inglese.

Perché i domini hanno bisogno di Punycode

Il DNS trasporta solo lettere, cifre e trattini in ASCII. Per ammettere nomi come münchen.de o 日本語.jp, ogni etichetta non ASCII viene codificata in una stringa ASCII che inizia con xn--. I browser mostrano la forma Unicode e risolvono quella ASCII; certificati, file di zona e la maggior parte delle API vogliono la forma ASCII. La codifica è Punycode (RFC 3492), e le regole su quali caratteri sono ammessi e come vengono normalizzati sono IDNA (RFC 5890–5895, UTS 46).

Come funziona Punycode

  1. Copia i caratteri ASCII dell’etichetta così come sono, seguiti da un trattino se ce n’era qualcuno: mnchen-.
  2. Codifica le posizioni e i code point dei caratteri non ASCII come una sequenza di cifre in base 36 (a–z, 0–9) con uno schema a lunghezza variabile che tiene corti i casi comuni: 3ya dice «inserisci ü dopo il primo carattere».
  3. Aggiungi il prefisso xn--: xn--mnchen-3ya.

Il risultato non distingue maiuscole e minuscole ed è al massimo 63 byte per etichetta, come qualsiasi etichetta DNS.

Attacchi omografi

Poiché le cirilliche а, е, о, р, с sembrano lettere latine, xn--80ak6aa92e.com viene mostrato come un convincente apple.com. I browser ora mostrano la forma xn-- quando un’etichetta mescola script o usa caratteri confondibili, e i registri limitano quali script possono essere combinati. Il convertitore avvisa quando un’etichetta mescola script per lo stesso motivo.

Dove lo incontrerai

Certificati TLS (il SAN deve contenere la forma xn--), record SPF e DKIM, indirizzi email (ü@example.de richiede SMTPUTF8 ed è una cosa diversa dagli IDN), URL nei log, e dig, che stampa la forma ASCII.

Domande

Cosa significa xn--?

È il prefisso ACE che contrassegna un’etichetta codificata in Punycode. Qualsiasi etichetta DNS che inizia con xn-- è un nome internazionalizzato in forma ASCII.

In un certificato uso la forma Unicode o quella xn--?

La forma xn--, sia nel CN (se usato) sia nel subjectAltName. Let’s Encrypt e le altre CA accettano la forma Unicode nella richiesta e la convertono.

Perché il mio convertitore dà un risultato diverso con le maiuscole?

IDNA mappa i nomi in minuscolo e NFC prima della codifica, quindi MÜNCHEN.de e münchen.de danno la stessa etichetta xn--. Questo strumento applica la stessa mappatura.

Gli indirizzi email possono essere internazionalizzati?

La parte del dominio usa Punycode come qualsiasi dominio. La parte locale prima della @ può essere UTF-8 solo con SMTPUTF8 (RFC 6531), che non tutti i server di posta supportano; per essa non esiste Punycode.