Zašto domenima treba Punycode
DNS prenosi samo slova, cifre i crtice u ASCII-ju. Da bi se dozvolila imena kao münchen.de ili 日本語.jp, svaka ne-ASCII labela se kodira u ASCII string koji počinje sa xn--. Pregledači prikazuju Unicode oblik, a razrešavaju ASCII; sertifikati, zonske datoteke i većina API-ja traže ASCII oblik. Kodiranje je Punycode (RFC 3492), a pravila o tome koji su znakovi dozvoljeni i kako se normalizuju su IDNA (RFC 5890–5895, UTS 46).
Kako Punycode radi
- Prepišite ASCII znakove labele kakvi jesu, pa crticu ako ih je bilo:
mnchen-. - Kodirajte pozicije i kodne tačke ne-ASCII znakova kao niz cifara u bazi 36 (a–z, 0–9) sa šemom promenljive dužine koja uobičajene slučajeve drži kratkim:
3yakaže „ubaci ü posle prvog znaka“. - Dodajte prefiks
xn--:xn--mnchen-3ya.
Rezultat ne razlikuje velika i mala slova i ima najviše 63 bajta po labeli, kao svaka DNS labela.
Homografski napadi
Pošto ćirilična а, е, о, р, с izgledaju kao latinična slova, xn--80ak6aa92e.com se prikazuje kao ubedljivi apple.com. Pregledači sada prikazuju xn-- oblik kad labela meša pisma ili koristi zamenljive znakove, a registri ograničavaju koja pisma smeju da se kombinuju. Konvertor iz istog razloga upozorava kad labela meša pisma.
Gde ćete ga sresti
TLS sertifikati (SAN mora da sadrži xn-- oblik), SPF i DKIM zapisi, adrese e-pošte (ü@example.de zahteva SMTPUTF8 i odvojeno je od IDN-a), URL-ovi u logovima, i dig, koji ispisuje ASCII oblik.
Pitanja
Šta znači xn--?
To je ACE prefiks koji označava Punycode kodiranu labelu. Svaka DNS labela koja počinje sa xn-- je internacionalizovano ime u ASCII obliku.
Da li u sertifikatu koristim Unicode ili xn-- oblik?
xn-- oblik, i u CN-u (ako se koristi) i u subjectAltName. Let’s Encrypt i drugi CA prihvataju Unicode oblik u zahtevu i konvertuju ga.
Zašto moj konvertor daje drugačiji rezultat za velika slova?
IDNA mapira imena u mala slova i NFC pre kodiranja, pa MÜNCHEN.de i münchen.de daju istu xn-- labelu. Ovaj alat primenjuje isto mapiranje.
Mogu li adrese e-pošte da budu internacionalizovane?
Deo sa domenom koristi Punycode kao i svaki domen. Lokalni deo pre @ može biti UTF-8 samo uz SMTPUTF8 (RFC 6531), koji ne podržavaju svi mail serveri; za njega ne postoji Punycode.