Esta mañana he tenido que generar un montón de certificados de prueba y me estaba generando a su vez un poco de ansiedad el trabajar con autofirmados y tener que estar aceptando continuamente que mis certificados son turbios 🫢 Es por ello que he decidido usar certificados de Let’s Encrypt para mis entornos de pruebas y he utilizado la herramienta Certbot para generarlos y conseguir mis .pfx de una forma sencilla. En este artículo te cuento cómo.
¿Qué es Certbot?
Si buscas cómo generar certificados de Let’s Encrypt usando la línea de comandos seguramente te encuentres con Certbot. Se trata de una herramienta bastante sencilla, y gratuita, creada por la Electronic Frontier Foundation (EFF), que nos permite crear certificados usando Lets Encrypt, que es lo que nos interesa. Para usarla lo primero que debes hacer es instalarla 😙:
# Install certbot
brew install certbot
Crear un certificado
El siguiente paso es crear tu certificado asociado al dominio que quieras utilizar. Certbot te permite obtener lo pasos para los diferentes tipos de servidor web con los que te sueles encontrar, pero en este caso no quiero integrarlo directamente, sino que quiero generar el pfx que posteriormente desplegaré en el servicio que corresponda. Para generarlo puedo usar el siguiente comando:
# Create certificate
EMAIL="<YOUR_EMAIL>"
sudo certbot certonly \
--manual --preferred-challenges dns \
--email $EMAIL --server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos -d management.$CUSTOM_DOMAIN
Lo más importante de ese comando es que necesitas proporcionar un correo electrónico y, a través del parámetro -d, indicar el dominio, o subdominio como es mi caso, para el que quieres el certificado. Al ejecutar este comando el terminal se quedará a la espera con el siguiente aviso:
Básicamente Certbot te facilita lo que Let’s Encrypt necesita saber, que es que ese dominio para el que quieres el certificado es tuyo. Una forma de confirmarlo es añadiendo un registro del tipo TXT con el valor que se indica en el terminal y esperar unos minutos a que este se propague. Te comparte incluso una URL para que puedas validar que efectivamente el valor de ese TXT ya es visible. Una vez que lo hayas confirmado puedes pulsar Enter y Certbot guardará el resultado en /etc/letsencrypt/live/
Obtener el .pfx del certificado de Let’s Encrypt
Llegados a este punto te habrás dado cuenta de que Certbot te devuelve dos archivo .pem, pero no es lo que necesitas en algunas ocasiones sino el .pfx, que es el certificado con la clave privada. Para poder generar este archivo puedes apoyarte en la herramienta openssl con los siguientes parámetros:
sudo openssl pkcs12 -export -out ./letscert-management.$CUSTOM_DOMAIN.pfx \
-inkey /etc/letsencrypt/live/management.$CUSTOM_DOMAIN/privkey.pem \
-in /etc/letsencrypt/live/management.$CUSTOM_DOMAIN/fullchain.pem \
-passout pass:1234
Y voilá! Ahí lo tienes.
¡Saludos!