Hola!, Vamos a instalar un certificado con lets Encrypt, el cual es gratis pero debemos poner de trabajo, en este tutorial creare certificados para dominio, subdominio (soyprogramador.liz.mx) y wildcard (*.liz.mx), es decir creo un comodín para todos los subdominios que se desprendan del dominio principal. obviamente si creo certificado wildcard, no tendrá caso crear un certificado para un subdominio.
Paso 1 -Instalando Certbot
sudo apt-add-repository ppa:certbot/certbot
sudo apt install certbot
certbot --version
certbot 0.31.0
Paso 2 -Instalando acme-dns-certbot
Instalaremos un script que nos ayudara con la validación por DNS, pero antes debemos especificar la versión de pyhton.
wget https://github.com/joohoi/acme-dns-certbot-joohoi/raw/master/acme-dns-auth.py chmod +x acme-dns-auth.py nano acme-dns-auth.py Agregamos el número 3 al final de python !/usr/bin/env python3
Paso 3 -Instalando certificado acme-dns-certbot y validando DNS
Generación de certificados para subdominio y dominio proncipalsudo certbot certonly --manual --preferred-challenges dns -d 'soyprogramador.liz.mx' -d 'liz.mx'
Generación de certificado Wildcardsudo certbot certonly --manual --preferred-challenges dns -d '*.liz.mx'
El comando anterior nos dará la siguiente salida (Se muestra un fragmento),
Antes de continuar debemos realizar la configuración en nuestro DNS
Output from acme-dns-auth.py: Please add the following CNAME record to your main DNS zone: _acme-challenge.soyprogramador.mx CNAME b45ce5b2-f987-4c85-97bf-09a5764a88f6.auth.acme-dns.io. Waiting for verification...
La configuración consiste en crear un registro TXT, con el valor indicado
Registro TXT: _acme-challenge.soyprogramador.liz.mx
Valor: b45ce5b2-f987-4c85-97bf-09a5764a88f6
Una vez realizado el registro, presionamos enter y la validación se llavara a cabo, Generalmente estos registro no deberían tardar mucho en propagarse, lo he realizado con CloudFlare y R53 de AWS Amazon
Después de la validación veremos lo siguiente:
Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/liz.mx/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/liz.mx/privkey.pem
Renovando certificado
Para la renovación de los certificados bastara con correr el siguiente comando, o bien se puede crear un demonio para que antes de su vencimiento se renueve.
sudo certbot renew
Configuración en Nginx
En nuestro archivo nginx se colocarian las siguientes lineas para validar cualquiera de nuestro subdominio *.liz.mx
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/liz.mxfullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/liz.mx/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Resultado final:
Bye!