Certificados Wildcard con Let’s Encrypt

No tener tu sitio con un certificado de seguridad es un pecado mayor en estos días, máxime cuando tenemos esta maravilla llamada Let’s Encrypt que proporciona certificados gratuitos para todo mundo.

Desde hace meses, también se pueden generar certificados Wildcard con lo que no hay pretexto para no tener uno. Veamos como.

IMPORTANTE: Debes de tener acceso a la configuración DNS de tu dominio para poder usar el método mostrado aquí.

Primero instalamos la herramienta certbot.

Para ArchLinux

sudo pacman -S certbot

Para Ubuntu Server 18.04

sudo apt install certbot

Primero nos registramos. Usa un correo valido y activo para recibir las notificaciones de renovación de tus certificados.

sudo certbot register --agree-tos -m TU_CORREO

[sudo] password for USER:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

IMPORTANT NOTES:
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.

Ahora solicitamos el certificado. Si copias y pegas, no olvides reemplazar DOMINIO por tu dominio.

sudo certbot certonly --manual --manual-public-ip-logging-ok --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory -d *.DOMINIO -d DOMINIO


[sudo] password for USER:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for DOMINIO
dns-01 challenge for DOMINIO

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.DOMINIO with the following value:

sfW-PhRM3MLrd3cmuI8AlfCKQSJQKDac5dnrTL_UuX0

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

En este momento, debes de ir al administrador de DNS de tu dominio y agregar un nuevo registro TXT con los valores que te muestre el script. Como ejemplo, te muestro una imagen de mi proveedor, el tuyo deberías ser muy similar. Intenta usar en el valor TTL, el menor valor que te permite tu proveedor.

Agregar registro TXT

Al crear o guardar debes de verlo listado en tus registros DNS.

Agregar registro TXT

IMPORTANTE: dependiendo de la velocidad con que tu proveedor actualice sus registros, la consulta de este nuevo registro TXT tardará más o menos, te sugiero consultar que el registro ha sido actualizado antes de continuar.

dig TXT _acme-challenge.DOMINIO +short

"sfW-PhRM3MLrd3cmuI8AlfCKQSJQKDac5dnrTL_UuX0"

En cuanto veas la consulta correcta de tu registro TXT, presiona Enter para continuar. Debe mostrarte un segundo registro TXT el cual debes de agregar también a el panel de tu proveedor, es necesario agregues los dos.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.DOMINIO with the following value:

gprhhYCnP1BBm3YTHEnWZ5sv5Uxss2Lp9vmP6dn-HUQ

Before continuing, verify the record is deployed.
(This must be set up in addition to the previous challenges; do not remove,
replace, or undo the previous challenge tasks yet. Note that you might be
asked to create multiple distinct TXT records with the same name. This is
permitted by DNS standards.)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

De nuevo, espera hasta que puedas ver los dos registros. Reitero, esto depende totalmente de la configuración que permita tu proveedor y de su infraestructura.

dig TXT _acme-challenge.DOMINIO +short

"sfW-PhRM3MLrd3cmuI8AlfCKQSJQKDac5dnrTL_UuX0"
"gprhhYCnP1BBm3YTHEnWZ5sv5Uxss2Lp9vmP6dn-HUQ"

Presiona Enter para continuar.

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/DOMINIO/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/DOMINIO/privkey.pem
   Your cert will expire on 2020-02-18. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Puedes verificar el certificado con:

sudo certbot certificates

[sudo] password for USER:
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: DOMINIO
    Domains: *.DOMINIO DOMINIO
    Expiry Date: 2020-02-18 22:55:15+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/DOMINIO/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/DOMINIO/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Eso es todo, ahora tienes tu certificado Wildcard listo para usarse en tu dominio o subdominios. No olvides renovarlo antes de 90 días.

Si tienes dudas o comentarios, lo platicamos en Mastodon