Los dominios con soporte de caracteres internacionales (como ñ, acentos, alfabeto cirílico….) son una bestia especial. Históricamente sólo se han podido registrar dominios que utilicen el juego de caracteres ASCII, sin embargo esto cambió hace un tiempo, primero se habilitó el uso de IDN para los dominios regionales, y posteriormente se permite el uso de caracteres internacionales con dominios de primer nivel (.com, .net,…)

¿Cómo funciona?

En realidad, nada ha cambiado, los nombres de dominio siguen soportando sólo el conjunto de caracteres ASCII. Lo que en realidad se ha hecho es habilitar el registro mediante una extensión, que, cuando adquirimos un dominio,  indica el idioma en el que queremos utilizar dicho dominio.

Esto permite registrar un dominio utilizando un juego de caracteres específico para el idioma en el que registramos el dominio. Y, dado que sólo se soporta el juego de caracteres ASCII , todos los caracteres se transformaran posteriormente a una representación especial en ASCII, denominada Punycode.

Por tanto, si queremos registrar el dominio iñaki.com, en realidad, estaremos registrando el siguiente dominio en su formato Punycodexn--iaki-gqa.com

Registrar un dominio IDN en Azure WebSites

Azure WebSites permite utilizar nombres de dominio personalizados para nuestros sitios web a partir del nivel Compartido. A través del portal podemos registrar los dominios a los que queremos que nuestro sitio web responda:

Administración de Dominios

Si intentamos agregar un dominio desde esta pantalla, nos encontramos con que sólo podemos agregar dominios que usen caracteres ASCII (cómo ocurre en la mayoría de proveedores de hosting):

Por tanto, escribiremos el dominio usando el formato Punycodexn--iaki-gqa.com y si nuestra configuración en el proveedor de DNS es correcta, Azure aparentemente aceptará la configuración.

Sin embargo si intentamos entrar a nuestro sitio a través del dominio que acabamos de configurar recibiremos un error 404. Si lo hacemos a través de la dirección proporcionada por Azure, inaki.azurewebsites.net, nos encontraremos con un error 503, lo que indica que nuestra aplicación ni si quiera se ha iniciado. Si eliminamos la configuración de dominio que acabamos de crear, veremos como todo vuelve a funcionar.

Powershell al rescate

¿Qué ha ocurrido? Todo parecía funcionar correctamente. Sin embargo este es un bug que se ha comentado varias veces en los foros de la MSDN. De hecho Microsoft, no recomienda configurar dominios IDN en Azure Web Sites por el momento. ¿Vaya no? Yo ya he comprado mi dominio, y quería usar Azure, ¿ahora no puedo?

En realidad sabemos que Azure Web Sites, esta basado en IIS, de hecho un IIS 8.0, aunque no podemos acceder a su configuración.

Por tanto, ¿cómo se configuran los dominios IDN en IIS? Pues resulta que a partir de la versión 7, para configurar un dominio IDN hay que introducirlo en su formato en UTF-8, e IIS se encargará de realizar la transformación al formato Punycode.

Por tanto, lo que ocurre es que la interfaz de Azure no nos permite introducir un dominio en su formato UTF-8 y al introducirlo en formato punycode, IIS falla al iniciar la aplicación. ¿Podemos hacer algo?

Sí, podemos intentar configurarlo con PowerShell. Azure dispone de una increíble cantidad de cmdlets para configurar y automatizar cualquier aspecto de la plataforma.

Por tanto, una vez instalado las herramientas de Azure para Powershell, agregamos nuestra cuenta de Azure a Powershell y establecemos nuestra subscripción como la suscripción activa:

Vamos a intentar cambiar la configuración de enlace de dominios de nuestro sitio web. Todas las configuraciones de un website las podemos modificar usando el cmdlet Set-AzureWebSite:

Esta vez lo hacemos configurando el dominio en su formato en UTF-8 .

Una vez aplicado, sólo tenemos que reiniciar el sitio web y todo comenzará a funcionar con normalidad.

Hasta la próxima, os leo!