Instalación de un certificado Let’s Encrypt TLS/SSL gratuito en el servidor web IIS/RDS

En esta guía, le mostraremos cómo instalar y vincular un certificado TLS/SSL Let’s Encrypt gratuito para un sitio en el servidor web IIS que se ejecuta en Windows Server 2019/2016/2012 R2.

Clientes Let’s Encrypt y ACME para Windows

Un certificado TLS/SSL de un sitio web permite proteger los datos del usuario transferidos a través de la red pública contra el hombre en el medio (MITM) ataques y proporcionar integridad de datos. Centro de certificación sin fines de lucro Vamos a cifrar le permite emitir automáticamente certificados TLS de cifrado X.509 gratuitos para el cifrado HTTPS utilizando la API. Solo se emiten certificados para validación de dominio que vencen en 90 días (hay un límite de 50 certificados para un dominio por semana). Pero puede renovar automáticamente el certificado SSL para su sitio web mediante una programación simple.

La interfaz de la API de Let’s Encrypt para emitir automáticamente los certificados se llama Entorno de gestión de certificados automatizado (CUMBRE) API. Hay 3 implementaciones de cliente API ACME más populares para sistemas Windows:

  1. Windows ACME simple (WACS) es la herramienta de símbolo del sistema para la emisión interactiva de un certificado SSL y vincularlo a un sitio específico en su servidor web IIS;
  2. Powershell ACMESharp módulo: es la biblioteca de PowerShell con varios cmdlets para interactuar con los servidores de Let’s Encrypt a través de la API de ACME;
  3. Certificar es una herramienta gráfica de Windows para administrar certificados SSL de forma interactiva mediante la API de ACME.

WACS Clint instalará el certificado Let’s Encrypt TLS en IIS en Windows Server

La forma más fácil de obtener un certificado SSL de Let’s Encrypt es usar la herramienta de la consola Windows ACME Simple (WACS) (anteriormente este proyecto llamado LetsEncrypt-Gana-Simple). Es un asistente simple que le permite seleccionar uno de los sitios web que se ejecutan en IIS, emitir y vincular automáticamente un certificado SSL.

Supongamos que tiene un sitio web de IIS que se ejecuta en Windows Server 2016. Su tarea es cambiar el sitio web a un modo HTTPS instalando un certificado SSL gratuito de Let’s Encrypt.

Descargue la última versión del cliente WACS desde GitHub https://github.com/PKISharp/win-acme/releases (en mi caso, esta es la versión v2.0.10 – el nombre del archivo es ganar-acme.v2.0.10.444.zip).

Descarga del cliente de Windows ACME Simple (WACS) LetsEncrypt desde github

Extraiga el archivo zip al siguiente directorio en el servidor donde está instalado IIS: c:inetpubletsencrypt

wacs.exe

Abra el símbolo del sistema elevado, vaya al directorio c:inetpubletsencrypt y ejecute wacs.exe. Esto iniciará un asistente interactivo de generación de certificados de Let’s Encrypt y vinculación con el sitio de IIS. Para crear rápidamente un nuevo certificado, seleccione NORTE:Crear nuevos certificados (simple para IIS).

cliente acmev2 simple: cree un nuevo certificado para iis en el servidor de Windows

A continuación, debe seleccionar el tipo de certificado. En nuestro ejemplo, no es necesario utilizar un certificado con alias (múltiples SAN – Nombre alternativo del sujeto), así que simplemente seleccione un elemento 1. Unión única de un sitio IIS. Si necesita un certificado Wildcard, seleccione la opción 3.

Luego, la utilidad muestra la lista de sitios web que se ejecutan en IIS y le pide que seleccione un sitio para emitir el certificado.

seleccione el dominio para emitir el certificado SSL

Especifique su dirección de correo electrónico a la que se enviarán las notificaciones sobre problemas de renovación de certificados y otros mensajes críticos y abusos (puede especificar varias direcciones de correo electrónico separadas por comas). Queda por aceptar los términos de uso y Windows ACME Simple se conectará a los servidores de Let’s Encrypt e intentará generar automáticamente un nuevo certificado SSL para su sitio web.

correo electrónico para letsencrypt

El proceso de generación e instalación del certificado SSL Let’s Encrypt para IIS está completamente automatizado.

Por defecto, la validación del dominio se realiza en el Validación http-01 (Autohospedaje) modo. Para hacer esto, debe tener un registro DNS de dominio que apunte a su servidor web. Al ejecutar WACS en modo manual (opciones completas), puede seleccionar el tipo de validación: 4 [http-01] Crear una aplicación temporal en IIS (recomendado). En este caso, se creará una pequeña aplicación en el servidor web IIS a través de la cual los servidores de Let’s Encrypt podrán realizar la validación del dominio.

Nota. Durante la validación TLS/HTTP, su sitio debe ser accesible desde Internet por su nombre DNS completo a través de los protocolos HTTP (80/TCP) y HTTPS (443/TCP).

La herramienta WACS guarda la clave privada del certificado (*.pem), el propio certificado y una serie de otros archivos en el C:Users%username%AppDataRoamingletsencrypt-win-simple. Luego, instalará el certificado SSL Let’s Encrypt generado en segundo plano y lo vinculará a su sitio IIS. Si hay un certificado SSL instalado en el sitio (por ejemplo, un certificado autofirmado), se reemplazará por uno nuevo.

En el Administrador de IIS, abra el Enlace del sitio configuración de su sitio web y verifique que utiliza el certificado emitido por Vamos a cifrar la autoridad X3.

propiedades del certificado Let's Encrypt Authority X3

Puede encontrar el certificado Let’s Encrypt IIS en el almacén de certificados de la computadora en Alojamiento Web -> Certificados.

Web Hosting -> Autoridades de certificados IIS con Let's Encrypt

Windows ACME Simple crea un nuevo trabajo en el Programador de tareas de Windows (win-acme-renew (acme-v02.api.letsencrypt.org)) para renovar automáticamente el certificado. La tarea comienza todos los días y la renovación del certificado se realiza después de 60 días. Esta tarea ejecuta el comando:

C:inetpubletsencryptwacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org"

Puede usar el mismo comando para actualizar manualmente el certificado Let’s Encrypt.

tarea en programador para renovar el certificado Let's Encrypt - win-acme-renew

Redirigir de HTTP a HTTPS utilizando la reescritura de URL de IIS

Para redirigir todo el tráfico HTTP entrante a la URL del sitio web HTTPS, instale el Módulo de reescritura de URL de Microsoft (https://www.iis.net/downloads/microsoft/url-rewrite) y asegúrese de que la opción Requerir SSL esté deshabilitada en la configuración del sitio. Ahora configure la redirección en web.config con reglas de reescritura:

<system.webServer>
<rewrite>
<rules>
<rule name=”HTTP to HTTPS Redirect” enabled=”true” stopProcessing=”true”>
<match url=”(.*)” />
<conditions>
<add input=”{HTTPS}” pattern=”off” ignoreCase=”true” />
</conditions>
<action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}” appendQueryString=”true” redirectType=”Permanent” />
</rule>
</rules>
</rewrite>
</system.webServer>

También puede configurar la redirección de tráfico mediante la extensión de reescritura de URL a través de la GUI del Administrador de IIS. Seleccione Sitios -> nombre de su sitio -> Reescritura de URL.

Módulo de reescritura de URL iis

Crear una nueva regla Agregar regla -> Regla en blanco.

Especifique un nombre de regla y cambie los siguientes valores de parámetro:

  • URL solicitada: coincide con el patrón
  • Utilizando: Expresiones regulares
  • Patrón: (.*)

Regla de entrada de edición de reescritura de URL

En el Condiciones sección, cambie la Agrupación lógica: Hacer coincidir todo y hacer clic Agregar. Especifique la siguiente configuración:

  • Entrada de condición: {HTTPS}
  • Compruebe si la cadena de entrada: Coincide con el patrón
  • Patrón: ^DESACTIVADO$

url reescribir agregar condiciones

Ahora, en el bloque de acción, seleccione:

  • Tipo de acción: redirigir
  • Redireccionar URL: https://{HTTP_HOST}/{R:1}
  • Tipo de redireccionamiento: Permanente (301)

Abra un navegador e intente abrir su sitio con una dirección HTTP; debería ser redirigido automáticamente a la URL HTTPS.

Uso de Let’s Encrypt Certificates con RDS Gateway y Web Access

Si usa RDS Gateway o RDS Web Access para conectar usuarios externos a la red corporativa, puede usar el certificado SSL de confianza de Let’s Encrypt en lugar del certificado autofirmado. Considere cómo instalar correctamente el certificado Let’s Encrypt para proteger los Servicios de escritorio remoto en Windows Server.

Si la función RDSH también está instalada en el servidor de puerta de enlace de escritorio remoto, debe evitar que los usuarios que no sean administradores accedan al directorio en el que se encuentran los archivos WACS (en mi ejemplo, c:inetpubletsencrypt) y el certificado y las claves Let’s encrypt ( C:ProgramDatawin-acme) se almacenan.

Luego, ejecute wacs.exe en el servidor de RD Gateway, como se describe anteriormente. Seleccione el sitio de IIS deseado (normalmente es el Sitio web predeterminado. Let’s Encrypt le emitirá un nuevo certificado y lo vinculará al sitio web de IIS, y la tarea de renovación automática del certificado aparecerá en el Programador de tareas.

Puede exportar manualmente este certificado y vincularlo a los servicios RDS requeridos a través del enlace SSL. Pero tendrás que realizar estos pasos manualmente cada 60 días cuando se renueve el certificado de Let’s Encrypt.

Podemos usar el script de PowerShell para vincular automáticamente el certificado SSL a la puerta de enlace RDS después de actualizar el certificado Let’s Encrypt.

Hay un script de PowerShell listo en el ganar-acme proyecto – ImportRDGateway.ps1 (https://github.com/PKISharp/win-acme/tree/master/dist/Scripts), que le permite instalar el certificado SSL seleccionado para Servicios de escritorio remoto. El principal inconveniente de este script es que debe especificar manualmente la huella digital del nuevo certificado:

ImportRDGateway.ps1 <certThumbprint>

Para obtener automáticamente la huella digital del certificado del sitio de IIS especificado, use el script modificado ImportRDGateway_Cert_From_IIS.ps1 (basado en ImportRDGateway.ps1).

Puede ejecutar este script manualmente:

powershell -File ImportRDGateway_Cert_From_IIS.ps1

Si su puerta de enlace RDS se ejecuta en el «sitio web predeterminado» de IIS con índice 0, puede usar el script sin cambios.

Para obtener el ID del sitio en IIS, abra la consola de PowerShell y ejecute:

Import-Module WebAdministration
Get-ChildItem IIS:Sites|ft -AutoSize

Get-ChildItem IIS - obtener la lista de sitiosLa columna ID muestra el índice de su sitio, réstele uno. El índice resultante debe especificarse en lugar de 0 en la línea 27 del script de PowerShell:

$NewCertThumbprint = (Get-ChildItem IIS:SSLBindings)[0].Thumbprint

cambiar el índice del sitio de la puerta de enlace rds en el script de powershell

Ahora abre el ganar-acme-renovar tarea del planificador, y en el Comportamiento agregue una nueva tarea que ejecute el script ImportRDGateway_Cert_From_IIS.ps1 después de actualizar el certificado SSL.

Para no cambiar la política de ejecución de PowerShell, puede ejecutar el script con el comando:

PowerShell.exe -ExecutionPolicy Bypass -File c:inetpubletsencryptImportRDGateway_Cert_From_IIS.ps1

win-acme-renew: renovar la tarea de certificado y actualizar el enlace RDS SSL

Ahora, la secuencia de comandos para vincular el certificado SSL al RDS se ejecutará inmediatamente después de que se renueve el certificado Let’s Encrypt. En este caso, el servicio RD Gateway se reinicia automáticamente con el comando:

Restart-Service TSGateway

Cuando el servicio TSGateway se reinicia, todas las sesiones de los usuarios actuales se desconectan, por lo que se recomienda cambiar la frecuencia de inicio de la tarea de renovación del certificado una vez cada 60 días.

Artículos Interesantes