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!
Categoria Certificados Digitales, IIS, Seguridad | Etiquetas: HTTPS, SSL
Hola gracias por estos datos,sigue estando vigente? lo probare saludos
Hola Axel.
El servicio de Let’s Encrypt sigue vigente, incluso ahora también te permite crear certificados con wildcard, o sea, podés crear un certificado para todos tu subdominios, algo así: *.midominio.com.
Saludos.
Hola Gustavo, gracias por tu pronta respuesta, si Let’s Encrypy sigue vigente, me refería al método, tengo Windows server 2008 R2 con IIS, me funciona? estoy viendo la pagina de Let’s y dice que tambien esta el Cerbot pero no se si funcione en mi caso. tu que opinas?
Hola Axel.
Este cliente de Let’s Encrypt es el que yo usé, pero podés usar cualquiera. Cerbot no lo probé, pero cualquier cliente es igual, simplemente usá el que te parezca más cómodo.
Incluso lo podés hacer manualmente, por ejemplo, con SSL For Free, pero en ese caso deberás actualizarlo manualmente cada 3 meses.
Saludos.