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 intermediario (MITM) ataca y proporciona integridad a los 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 la validación de dominios que caducan 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 sencilla.
La interfaz de la API Let’s Encrypt para emitir los certificados automáticamente se llama Entorno de gestión de certificados automatizado (CUMBRE) API. Hay 3 implementaciones de cliente API ACME más populares para sistemas Windows:
- 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;
- Powershell ACMESharp módulo: es la biblioteca de PowerShell con una serie de cmdlets para interactuar con los servidores Let’s Encrypt a través de la API ACME;
- Certificar es una herramienta de gráficos de Windows para administrar certificados SSL de forma interactiva mediante la API de ACME.
WACS Clint para instalar Let’s Encrypt TLS Certificate en IIS en Windows Server
La forma más sencilla de obtener un certificado SSL de Let’s Encrypt es utilizar la herramienta de consola Windows ACME simple (WACS) (anteriormente este proyecto se llamaba LetsEncrypt-Win-Simple). Es un asistente simple que le permite seleccionar uno de los sitios web que se ejecutan en el IIS, emitirlo automáticamente y vincularlo con 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 win-acme.v2.0.10.444.zip).
Extraiga el archivo zip en el siguiente directorio del servidor donde está instalado IIS: c:inetpubletsencrypt
Abra el símbolo del sistema elevado, vaya al directorio c: inetpub letsencrypt y ejecute wacs.exe. Esto lanzará una generación de certificados Let’s Encrypt interactiva y un enlace al asistente de sitio de IIS. Para crear rápidamente un nuevo certificado, seleccione NORTE: – Crear nuevos certificados (simple para IIS).

A continuación, debe seleccionar el tipo de certificado. En nuestro ejemplo, no es necesario utilizar un certificado con alias (SAN múltiple – Nombre alternativo del sujeto), así que seleccione un elemento 1. Enlace único 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 solicita que seleccione un sitio para el cual emitir el certificado.

Especifique su dirección de correo electrónico a la que se enviarán 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.

El proceso de generación e instalación del certificado Let’s Encrypt SSL para IIS está completamente automatizado.
De forma predeterminada, la validación del dominio se realiza en el Validación http-01 (SelfHosting) 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 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 certificado en sí y varios otros archivos en el C: Usuarios % nombre de usuario% AppData Roaming letsencrypt-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, certificado autofirmado), será reemplazado 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.

Puede encontrar el certificado Let’s Encrypt IIS en el almacén de certificados informáticos en Alojamiento web -> Certificados.

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

Redirigir de HTTP a HTTPS mediante 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 el redireccionamiento del tráfico mediante la extensión de reescritura de URL a través de la GUI del Administrador de IIS. Seleccione Sitios -> youritename -> Reescritura de URL.

Crea 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: (. *)

En el Condiciones sección, cambie el Agrupación lógica: Coincidir con todos y haga clic en Agregar. Especifique la siguiente configuración:
- Entrada de condición: {HTTPS}
- Compruebe si la cadena de entrada: Coincide con el patrón
- Patrón: ^ DESCUENTO $

Ahora, en el bloque 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 confiable 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: inetpub letsencrypt) y el certificado y las claves Let’s encrypt ( C: ProgramData win-acme) se almacenan.
Luego, ejecute wacs.exe en el servidor de puerta de enlace de Escritorio remoto, como se describe anteriormente. Seleccione el sitio 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 necesarios a través del enlace SSL. Pero tendrá que realizar estos pasos manualmente cada 60 días cuando se renueve el certificado 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 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 utilizar la secuencia de comandos sin cambios.
Import-Module WebAdministration
Get-ChildItem IIS:Sites|ft -AutoSize
La columna ID muestra el índice de su sitio, reste 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

Ahora abre el ganar-acme-renovar tarea del programador, y en el Comportamiento pestaña 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

Ahora, el script 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 de Puerta de enlace de Escritorio remoto se reinicia automáticamente con el comando:
Restart-Service TSGateway
[aler] Cuando se reinicia el servicio TSGateway, todas las sesiones de usuario actuales se desconectan, por lo que se recomienda cambiar la frecuencia de lanzamiento de la tarea de renovación del certificado una vez cada 60 días.[/alert]





