La semana pasada explicaba en un post qué era SNI (Server Name Indication) y cómo podíamos sacarle partido en Internet Information Server 8.0 para albergar varios certificados SSL/TSL en una misma IP, y restringir a dicha IP el acceso solo desde los dominios apropiados.

En teoría en IIS 7.x bajo Windows Server 2008 o 2008 R2, no está disponible esta opción, al menos no para certificados SSL normales.

Sin embargo, si vamos a las propiedades de un "binding" para HTTPS, vemos que dispone de un cuadro de texto para el nombre de dominio, similar al de IIS 8.0, pero que está deshabilitado:

SSL-NombreHost-1

Así que parece que, aunque esté deshabilitado, algún tipo de soporte debe de haber para usar SNI en IIS 7.x ¿no?

Bien, el caso es que IIS 7.0 soporte SNI con certificados SSL de tipo wildcard, es decir, aquellos que son capaces de soportar múltiples subdominios de un mismo dominio con el mismo certificado. Este tipo de certificados se asocian a dominios de tipo *.midominio.com. Es decir, cualquier cosa delante del punto del dominio de segundo nivel (ver post anterior para más información).

De hecho si disponemos de uno de estos dominios wildcard y lo asignamos a un "binding" de un servidor web virtual, veremos que la casilla se habilita y podemos escribir el nombre del subdominio que queramos sin problema.

¿Cómo sacar partido a SNI con cualquier certificado normal?

Existen formas de asignar nombres de dominio con certificados usando herramientas de línea de comandos. Pero en este post me voy a centrar en cómo lograrlo desde la interfaz de usuario.

Para ello vamos a aprovecharnos de un fallo en la validación que hace el administrador de bindings de IIS.

Voy a suponer que tienes ya el certificado SSL instalado en el servidor, y que tienes creado el binding correspondiente.

Paso 1.- Abre el gestor de certificados digitales del sistema

Para ello usa el menú de "Ejecutar" (Windows+R) y escribe simplemente "MMC" para que se lance la consola de administración de Microsoft. Una vez en ella agrega el complemento de certificados digitales siguiendo las indicaciones de la imagen:

Agregar Snap-in - Certificados - Cuenta del equipo - Equipo local
Pulsa para aumentar

Una vez añadido el complemento verás que tienes acceso a los diversos certificados digitales del equipo. En este caso concreto debes ir a la rama "Personal" que es la que guarda los certificados SSL disponibles.

En ella verás todos los certificados apropiados para SSL que tiene el servidor.

Selecciona el certificado para el cual quieres habilitar el nombre de dominio y pulsa con el botón secundario del ratón sobre él. En el menú desplegable que aparece escoge "Propiedades". Verás aparecer la ventana de ajustes del certificado. En la pestaña "General" puedes escoger el nombre amigable que le quieres dar al certificado, que es el que luego te aparecerá en el desplegable de certificados de los "bindings":

Nombre amigable para el certificado
Pulsa para aumentar

El truco es el siguiente: coloca un asterisco (*) delante del nombre amigable del certificado, como en la figura anterior.

Con esto lo que consigues es "confundir" al gestor de bindings de IIS 7.x y se piensa que es un certificado de tipo wildcard (alucinante,pero cierto). A partir de ese momento, en el sitio web que tenga asociado dicho certificado te dejará especificar un nombre de dominio y restringir el uso del certificado al mismo:

SSL-NombreHost-2

De esta manera podrás disfrutar de SNI en IIS 7.x en certificados normales, aunque en teoría no estén disponibles :-)

Lo que no sé es porqué no lo facilitan un poco los de Microsoft. Supongo que sus buenas razones tendrán.

¡Espero que te sea útil!

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor