Windows Server: Redirigir conexiones HTTP a HTTPS en IIS

Cuando necesitamos que todas las peticiones HTTP de un dominio concreto de nuestro servidor IIS sean redirigidas a un socket seguro (HTTPS) tendremos que reescribir la URL para convertirla en HTTPS.

Nota: En esta caso la opción de redirigir no nos valdría ya que produciríamos un bucle infinito al servidor estar constantemente redirigiendo a la url HTTPS.

Instalación extensión URL Rewrite

En primer lugar, y sino lo tenéis ya, tendremos que instalar la extensión URL Rewrite en nuestro servidor IIS.

Podremos realizar la instalación, de forma fácil, dirigiéndonos a la siguiente url oficial de Microsoft.

Una vez realizada la instalación en nuestro IIS nos deberá aparecer el siguiente icono.

Nota: Sino apareciera el icono después de instalarlo deberás cerrar y abrir nuevamente IIS.

Configuración regla reescritura de dirección URL mediante GUI

Nos dirigiremos a la nueva opción Reescritura de dirección URL que podremos encontrar en nuestro sitio (virtual host).

En el panel de acciones pulsamos sobre Agregar reglas y en la pantalla que se nos abrirá pulsaremos sobre Regla en blanco.

Rellenamos la siguiente información:

  • Nombre: Nombre de la regla.
  • Coincidir dirección URL:
    • Dirección URL solicitada: Coincide con el patrón.
    • Usando: Expresiones regulares.
    • Patrón: (.*)
    • Omitir mayúsculas y minúsculas: Marcado.
  • Condiciones:
    • Agrupación lógica: Coincide con todas.
    • Agregar la condición:
      • Entrada de condición: {HTTPS}
      • Comprobar si la cadena de entrada: Coincide con el patrón.
      • Patrón: ^OFF$
  • Acción:

Por último salvamos nuestra regla y ya tendremos aplicada la redirección.

Configuración regla reescritura de dirección URL mediante web.config

Si en vez de hacerlo mediante el GUI de IIS queremos hacerlo añadiendo el código directamente el web.config de nuestro sitio web simplemente tendremos que editarlo y añadir el bloque <rewrite> tal y como indico a continuación:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="To HTTPS" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="^OFF$" />
          </conditions>
          <action type="Redirect" url="https://sustituir_por_direccion_url/{R:1}" redirectType="SeeOther" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

Espero os haya sido de utilidad.

Entradas relacionadas

Deja un comentario