bitlvl
DE

Punycode- / IDN-Konverter

Tippen Sie eine Domain mit Nicht-ASCII-Buchstaben, um die Form zu erhalten, die DNS tatsächlich verwendet, oder fügen Sie einen xn--Namen ein, um zu sehen, was er bedeutet. Jedes Label wird einzeln gezeigt.

Die Ergebnisse und Meldungen dieses Tools werden auf Englisch angezeigt.

Warum Domains Punycode brauchen

DNS transportiert nur ASCII-Buchstaben, Ziffern und Bindestriche. Um Namen wie münchen.de oder 日本語.jp zu erlauben, wird jedes Nicht-ASCII-Label in eine ASCII-Zeichenkette kodiert, die mit xn-- beginnt. Browser zeigen die Unicode-Form und lösen die ASCII-Form auf; Zertifikate, Zonendateien und die meisten APIs wollen die ASCII-Form. Die Kodierung ist Punycode (RFC 3492), und die Regeln, welche Zeichen erlaubt sind und wie sie normalisiert werden, sind IDNA (RFC 5890–5895, UTS 46).

Wie Punycode funktioniert

  1. Die ASCII-Zeichen des Labels unverändert kopieren, gefolgt von einem Bindestrich, falls es welche gab: mnchen-.
  2. Positionen und Codepunkte der Nicht-ASCII-Zeichen als Folge von Basis-36-Ziffern (a–z, 0–9) in einem Schema variabler Länge kodieren, das häufige Fälle kurz hält: 3ya sagt „ü nach dem ersten Zeichen einfügen“.
  3. Mit xn-- voranstellen: xn--mnchen-3ya.

Das Ergebnis ignoriert Groß-/Kleinschreibung und ist höchstens 63 Byte pro Label lang, wie jedes DNS-Label.

Homograph-Angriffe

Weil die kyrillischen а, е, о, р, с wie lateinische Buchstaben aussehen, wird xn--80ak6aa92e.com als überzeugendes apple.com dargestellt. Browser zeigen inzwischen die xn--Form, wenn ein Label Schriften mischt oder verwechselbare Zeichen enthält, und Registries beschränken, welche Schriften kombiniert werden dürfen. Der Konverter warnt aus demselben Grund, wenn ein Label Schriften mischt.

Wo man ihm begegnet

TLS-Zertifikate (der SAN muss die xn--Form enthalten), SPF- und DKIM-Einträge, E-Mail-Adressen (ü@example.de braucht SMTPUTF8 und ist von IDN getrennt), URLs in Logs und dig, das die ASCII-Form ausgibt.

Fragen

Was bedeutet xn--?

Es ist das ACE-Präfix, das ein Punycode-kodiertes Label kennzeichnet. Jedes DNS-Label, das mit xn-- beginnt, ist ein internationalisierter Name in ASCII-Form.

Verwende ich im Zertifikat die Unicode- oder die xn--Form?

Die xn--Form, sowohl im CN (falls verwendet) als auch im subjectAltName. Let’s Encrypt und andere CAs akzeptieren die Unicode-Form im Antrag und wandeln sie um.

Warum liefert mein Konverter bei Großbuchstaben ein anderes Ergebnis?

IDNA bildet Namen vor dem Kodieren auf Kleinbuchstaben und NFC ab, sodass MÜNCHEN.de und münchen.de dasselbe xn--Label ergeben. Dieses Tool wendet dieselbe Abbildung an.

Können E-Mail-Adressen internationalisiert werden?

Der Domain-Teil nutzt Punycode wie jede Domain. Der lokale Teil vor dem @ kann nur mit SMTPUTF8 (RFC 6531) UTF-8 sein, was nicht alle Mailserver unterstützen; dafür gibt es kein Punycode.