Buscar

Windows: IIS redirigir http a https

En muchos entornos con servidores web, nos puede interesar redirigir todas las peticiones HTTP a HTTPs. 

Un caso reciente es con el navegador Firefox, desde un formulario HTTP donde se envía una contraseña, nos encontraremos con un aviso:


"Esta conexión no es segura. Las credenciales introducidas aquí pueden verse  comprometidas"

Windows: IIS redirigir http a https

Debido a las nuevas características incorporadas en las recientes versiones de los navegadores más utilizados como: Chrome, Firefox, Internet Explorer, Edge, entre otros.

Como solución al problema, algunos administradores de sistemas están optando por pasar todo el site de HTTP (80) a HTTPs (443).

La idea de la redirección sería que todas las URLs quedasen convertidas a HTTPs.

Por ejemplo:

http://www.sysadmit.com -> https://www.sysadmit.com

http://www.sysadmit.com/hola -> https://www.sysadmit.com/hola

http://sysadmit.com -> https://www.sysadmit.com

Para realizar este cambio, necesitaremos reescribir todas las URLs.

Mención especial con el cambio indicado de color verde.

No solo estamos cambiando http por https si no que también estamos cambiando el FQDN (fully qualified domain name), de esta manera, según el ejemplo anterior, podemos utilizar un certificado digital con el FQDN: *.sysadmit.com o bien www.sysadmit.com y no tendremos que añadir: sysadmit.com como nombre alternativo en el certificado.

En este post, veremos el detalle de cómo configurar una redirección de HTTP a HTTPs utilizando el servidor web que integra Windows Server: IIS (Internet Information Services).

Veamos cómo redirigir http a https con IIS:


En primer lugar, necesitaremos descargar e instalar la herramienta URL Rewrite:

http://www.iis.net/downloads/microsoft/url-rewrite

La versión actual de URL Rewrite es compatible con las siguientes versiones de IIS (Internet Information Services): IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10.

Dicho de otra forma, la versión mínima de Windows Server donde funcionará la versión actual (mayo 2017) de URL Rewrite es: Windows Server 2008.

Para saber la versión de IIS instalada, podemos utilizar alguno de estos métodos:

Windows: IIS cómo saber la versión instalada (SYSADMIT.com)

Una vez instalado el componente, veamos cómo sería la configuración del ejemplo anterior vía GUI.

Redirigir http a https con IIS desde GUI

Si nos situamos sobre el site y pulsamos sobre el apartado: "URL Rewrite", configuraremos lo siguiente:

Windows: IIS redirigir http a https

Windows: IIS redirigir http a https


1) Rojo: Nombre de la regla

2) Azul: "Match URL":

Requested URL: Seleccionamos "Matches the pattern".

Using: Seleccionamos: "Regular Expressions".

Pattern: Indicamos: "(.*)" y marcamos la opción "Ignore case".

3) Verde: "Conditions":

Primera regla:

Input: {HTTP_HOST}
Type: "Matches the Pattern"
Pattern: ^[^www]

Segunda regla:

Input: {HTTPS}
Type: "Matches the Pattern"
Pattern: off

4) Naranja: "Action"

Action type: "Redirect"

Action properties:

Redirect URL: https://www.sysadmit.com/{R:1}

Marcamos la opción: "Append query string"

Redirect type: Permanent (301).


Redirigir http a https con IIS con el fichero web.config

A partir de Windows Server 2008, la configuración de un site de IIS se guarda en un fichero con el nombre web.config en el directorio donde está situado el site.

Las configuraciones que realizamos desde GUI, se van guardando en el fichero web.config, por tanto, si editamos el fichero, podremos realizar la conguración anterior añadiendo el siguiente código:


<rewrite>
    <rules>
    <clear />
       <rule name="Force WWW and SSL" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAny">
        <add input="{HTTP_HOST}" pattern="^[^www]" />
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" url="https://www.sysadmit.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>


2 comentarios: