Twitter Facebook Google + RSS Feed

Utilizar Let’s Encrypt con IIS

0
Certificados DigitalesIISSeguridad

Lunes, 04 de Julio de 2016 a las 22:19hs por Gustavo Cantero (The Wolf)

Hace unos días publiqué un artículo contando un poco de qué se trata Let’s Encrypt y había prometido contar cómo utilizarlo, por lo cual, acá voy a explicar cómo crear un certificado SSL, usarlo en un sitio web de IIS y programar la renovación automática.

Para esto voy a utilizar la herramienta letsencrypt-win-simple, la cual está desarrollada con .NET y con la que podemos realizar toda la configuración de manera muy sencilla.

Luego de bajar esta herramienta la debemos copiar al servidor web y ejecutarla, tras lo cual nos mostrará un contenido parecido al siguiente:

Let's Encrypt (Simple Windows ACME Client)
Renewal Period: 60
Certificate Store: WebHosting

ACME Server: https://acme-v01.api.letsencrypt.org/

Config Folder: C:\Users\usuario\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org
Certificate Folder: C:\Users\usuario\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org
Loading Signer from C:\Users\usuario\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\Signer

Getting AcmeServerDirectory
Loading Registration from C:\Users\usuario\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\Registration

Scanning IIS Site Bindings for Hosts
 1: IIS www.scientia.com.ar (C:\inetpub\wwwroot\www)
 2: IIS testing.scientia.com.ar (C:\inetpub\testing)
 3: IIS testing2.scientia.com.ar (C:\inetpub\testing2)

 W: Generate a certificate via WebDav and install it manually.
 F: Generate a certificate via FTP/ FTPS and install it manually.
 M: Generate a certificate manually.
 A: Get certificates for all hosts
 Q: Quit
Which host do you want to get a certificate for:

En estas líneas podemos ver varias cosas: nos muestra el tiempo de renovación, en este caso 60 días, lo que significa que no va a pedir un certificado cuya antigüedad sea menor a este valor, los directorios donde guardará la configuración y los certificados, utilizando por defecto la carpeta letsencrypt-win-simple dentro del directorio de usuario (en mi caso en C:\Users\usuario\AppData\Roaming\letsencrypt-win-simple), y por último nos muestra los sitios configurados en el IIS y algunas opciones para generar los certificados manualmente o de manera remota utilizando WebDAV o FTP.

Para este ejemplo elegiremos uno de los sitios configurados en nuestro IIS, por ejemplo el 2, tras lo cual nos mostrará algo así:

Authorizing Identifier testing.scientia.com.ar Using Challenge Type http-01
 Writing challenge answer to C:\inetpub\testing\.well-known/acme-challenge/ywwxERPAI6PK17q0DtGfHYM0ShgEZflAmsWzCcbhJ9U
 Writing web.config to add extensionless mime type to C:\inetpub\testing\.well-known\acme-challenge\web.config
 Answer should now be browsable at http://testing.scientia.com.ar/.well-known/acme-challenge/ywwxERPAI6PK17q0DtGfHYM0ShgEZflAmsWzCcbhJ9U
 Submitting answer
 Refreshing authorization
 Authorization Result: valid
 Deleting answer

Aquí nos muestra el archivo creado en nuestro sitio para que Let’s Encrypt pueda verificar que es nuestro y que la validación fue exitosa.  Luego devolverá algo como esto:

Requesting Certificate
 Request Status: Created
 Saving Certificate to C:\Users\usuario\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\testing.scientia.com.ar-crt.der
 Saving Issuer Certificate to C:\Users\usuario\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\ca-0A0141420000015385736A0B85ECA708-crt.pem
 Saving Certificate to C:\Users\usuario\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\testing.scientia.com.ar-all.pfx
 Opened Certificate Store "WebHosting"
 Adding Certificate to Store
 Closing Certificate Store
 Adding https Binding
 Committing binding changes to IIS
 Opened Certificate Store "WebHosting"
 Closing Certificate Store
 Creating Task letsencrypt-win-simple httpsacme-v01.api.letsencrypt.org with Windows Task Scheduler at 9am every day.

En este texto nos cuenta que la creación del certificado fue satisfactoria y nos muestra dónde lo guardó, con qué nombre, en que store del servidor lo instaló, que agregó el binding https a nuestro sitio web en el IIS (en caso de no haberlo tenido ya configurado), y que creó una tarea en el Windows Task Scheduler que se ejecutará todos los días a las 9 de la mañana para verificar si hay que renovar algún certificado.

En caso que hayamos ejecutado antes esta herramienta para crear otro certificado, esta tarea ya va a estar creada, por lo que nos va a mostrar el siguiente mensaje pudiendo elegir si reemplazamos la tarea existente o no:

Do you want to replace the existing letsencrypt-win-simple httpsacme-v01.api.letsencrypt.org task? (Y/N)

Si elegimos no ahí termina todo, pero si en cambio elegimos si, o esta es la primera vez que utilizamos la herramienta, nos consultará si queremos especificar un usuario con el cuál se ejecutará la renovación.  Deberíamos elegir si e ingresar los datos de un usuario válido para que la herramienta, en caso de tener un certificado a renovar, tenga los permisos necesarios para hacerlo.

Do you want to specify the user the task will run as? (Y/N) Y
Enter the username (Domain\username): usuario
Enter the user's password: *********
 Renewal Scheduled IIS testing.scientia.com.ar (C:\inetpub\testing) Renew After 02/09/2016
Press enter to continue.

Y esto es todo, ya tenemos nuestro nuevo certificado gratis instalado, el IIS configurado y una tarea para la renovación automática configurada en el Task Scheduler.

Espero que este artículo les sea de utilidad.

¡Suerte!


0 comentarios »

Deja un comentario

Buscar