En este post hablaremos de como generar un certificado SSL usando Let’s Encrypt con un Wildcard a un dominio y usando como reto DNS.
Usaremos este tipo de configuración por dos motivos:
- Reto DNS: Debido a que en nuestro router no tenemos capacidad de abrir los puertos WEB necesarios por certbot (80 y 443).
- Wildcard: Debido a que tenemos control total en el dominio, lo que nos permitirá tener todos nuestros servicios con el mismo certificado y añadir la entrada TXT que requiere esta configuración.
Instalación
Fedora:
sudo dnf install certbot
MacOs:
brew install certbot
Podemos encontrar el resto de documentación sobre instalación y uso en la documentación oficial.
Los comandos ejecutados en este post se han realizado con la siguiente versión de certbot:
|
|
Generación del certificado
El comando a ejecutar sería el siguiente:
|
|
En el caso de que se quiera ejecutar sin ser root, se deben pasar estos parámetros:
|
|
En mi caso, al usar zsh el dominio debe de ir entrecomillado o fallará con el error: zsh: no matches found: *.procamora.com
Este comando es interactivo y nos hará una serie de preguntas, una de ellas es que creemos un registro TXT en nuestro dominio, para verificar que somos los dueños de este. Esto lo realizamos con el servicio con el que tengamos comprado el dominio.
|
|
Una vez creado, debería de propagarse el cambio en segundos o minutos, dependiendo de nuestro proveedor de DNS. Podemos verificar que se creó bien la entrada TXT con cualquiera de los siguientes comandos:
|
|
Si todo ha ido bien, se crearán los certificados en las siguientes rutas (las proporciona el script, pueden cambiar dependiendo del sistema).
|
|
Y nos proporciona la información de como renovar el certificado dentro de 3 meses cuando caduque.
|
|
Cron
Mi recomendación es actualizar el certificado con el siguiente comando dentro de un cron:
|
|
Aunque el certificado caduca en 90 días, yo intento renovarlo cada 15 dias para evitar que me pueda caducar antes de que lo haya renovado, obligandome a volver a generarlo. El cron es cada 15 días debido a que este servidor no siempre está encendido.
La documentación oficial recomienda ejecutar el siguiente comando para la renovación automática:
|
|
Nginx Proxy Manager
El último paso sería usar el certificado, en mi caso personal uso Nginx Proxy Manager por la facilidad que me proporciona para la gestión de hosts y ACLs.