Ir al contenido principal

Generar Certificado SSL Wildcard usando Let's Encrypt/Certbot


 Introducción

 Buen día, en esta ocasión quiero compartir como se realiza la creación de un certificado wildcard, o lo que es lo mismo, un certificado que puedas usar con tu dominio principal y con subdominio.

Digamos que tienes un dominio llamado supertienda.com, y deseas tener varios subdominios, como por ejemplo: www.supertienda.com, almacen.supertienda.com, webmail.supertienda.com, etc.

 Inicialmente, cuando supe de Let's Encrypt y la ventaja de tener un certificado gratuito (se vale donar), me agrado mucho la idea, pero tenia que crear un certificado por cada dominio/subdominio que quería usar.

No hace mucho alguien me pregunto si podíamos crear un certificado de Let's Encrypt pero como wildcard, por lo que buscando encontramos y aquí el como.

Aclaración

Este proceso contempla el hecho de tener acceso al manejador de DNS (servicio/servidor), ya que se requiere realizar una configuración en dicho servicio para que funcione la creación del certificado

Primero lo primero

 Dependiendo de la distribución que estes usando, tendras que instalar Certbot. Usualmente las distribuciones mas comunes ya lo tienen en sus repositorios, por lo que tendras que:

Ubuntu/Debian (y derivados)

sudo apt install certbot

Para Centos/RHEL/Fedora (y derivados)

sudo yum install certbot

Una vez instalado se procede con el siguiente paso.

Generando el certificado

Usualmente, para generar un certificado de forma "normal", solo se requiere ejecutar el comando de certbot y con algunos parametros, indicando tipo de servicio web (apache, nginx), entre otros parametros. Pero en este caso se pasaran parametros donde uno de ellos es definir el proceso manual.

certbot certonly --manual \
--preferred-challange=dns --email webmaster@supertienda.com \
-- server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.supertienda.com

 Donde:

  • --manual: Indica que la generación sera de forma manual e interactiva o utilizando un hook de shell
  • --preferred-challenge: Indica que la validación sera a traves de la validación del DNS, usualmente utiliza el servicio de apache, nginx a traves del puerto 80 de la IP donde responde el dominio deseado.
  • --server: Especifica el punto de generación del certificado. Actualmente solo acme-v02
  • --agree-tos: Bandera. Aceptar Servidores ACME
  • -d: Escpecifica el dominio deseado. Es aquí donde se pone el wildcard

Nota: Como se esta generando un certificado SSL wildcard, se indica el dominio con el *, como se muestra en el ejemplo.

Autenticando el dominio en el DNS

Para certificados Wildcard la unica autenticación es por DNS (challenge) para Let's Encrypt, el cual se invoca con el parametro preferred-challenge=dns.

 Una vez que se ejecuta el comando con los parametros indicados, Certbot indicara el valor que hay que configurar en el DNS con el tipo TXT. El mensaje se mostrará como:

Please deploy a DNS TXT record under the name
_acme-challenge.supertienda.com with the following value:
J50GNXkhGmKCfn-0LQJcknVGtPEAQ_U_WajcLXgqWqo

 

Los valores a rescatar son:

  • Nombre del registro: _acme-challenge
  • Valor: j50GNXkhGmKCfn-0LQJcknVGtPEAQ_U_WajcLXgqWqo

Revisando el registro TXT

El registro se tiene que generar del tipo TXT. Certbot se quedará a la espera a que se propague el registro del DNS. Para validar si el registro ya se propagó, puedes validar utilizando un servicio online, en caso probé en MxToolBox. Ahi se debe poner en la casilla como sigue:

Al validar, deberá mostrarte que encontro el registro (ya propagado por los servidores DNS). Se debe de la siguiente manera:

Certbot debe estar en esperá de la propagación, solo hay que darle enter para validar el registro. Si todo esta correcto debera mostrarte el mismo mensaje que muestra cuando se crea el certificado.

Con lo anterior queda generado el certificado. Esperando que sea de utilidad para más de alguno, nos leemos luego. Saludos


Comentarios

Entradas más populares de este blog

Como montar particiones LVM en Linux

Como están lectores, reportandome después de varios meses fuera. Hace un par de días vi un howto que me gusto y quiero compartir. Nota: lo siguiente es una traducción, el original lo pueden ver el siguiente link: How to mount an LVM partition on Linux Introducción LVM es una herramienta de administración de volúmenes lógicos (particiones) la cual te permite administrar el espacio de disco usando la connotación de volúmenes lógicos y grupo de volúmenes. El mayor beneficio de usar LVM sobre las particiones clásicas es la flexibilidad en la asignación de almacenamiento para usuarios y aplicaciones sin verse limitado por el tamaño de los discos individuales. En LVM, el almacenamiento físico, en el cual se crean los volúmenes lógicos, son particiones tradicionales (/dev/sda1, /dev/sda2). Estas particiones deben ser marcadas como "volúmenes físicos" y etiquetadas como "Linux LVM", esto para ser usadas en LVM. Como no montar Unas vez que las particiones h

Configurando interfaces de red virtuales en Linux

Estimados, de nuevo en acción retomando mi rumbo. Les traigo un traducción de un howto que me llamo la atención y creo que es bueno tener información en castellano. Así que aquí esta: La entrada original la pueden tener aqui (si te gusta leer en ingles), comencemos. Introducción ¿Sabia que puedes asignar mas de una dirección IP a una única interfaz de red? Esta técnica es muy utilizada, por ejemplo cuando se trabaja con Apache y host virtuales, esto para permitir accesar al mismo servicio pero usando dos direcciones IP. Interfaz de red virtual temporal  El proceso de crear interfaces de red virtual en +GNU/Linux  es muy simple. Esto involucra una ejecución simple del comando ifconfig ifconfig eth0:0 123.123.22.22 El comando anterior creara una nueva interfaz de red virtual basada en la interfaz física de eth0 . Lo condición mas importante para crear una interfaz de red virtual es la interfaz física de red, como en nuestro ejemplo, eth0 debe existir. El ejemplo comple

Como leer/visualizar archivos utmp, wtmp y btmp en Linux

Lectores, les paso este "Como" de linux, algo que debe ser usado por cualquier sysadmin de Linux. Esperando aportar conocimiento, aqui les dejo. Introducción. En sistemas operativos Linux/Unix todo es registrado en algun lado (los conocidos logs). La mayoria de registros del sistema se almacenan en el directorio /var/log . El directorio contiene registros relacionados a distintos servicios y/o aplicaciones. En este directorio tenemos algunos archivos como utmp , wtmp y btmp . Estos archivos contienen todo el detalle de registro de inicio (login) y termino (logout) de sesiones de usuarios ya sea local, sistemas remoto, como estado en el sistema, tiempo en linea, etc. Informacion sobre los archivos utmp : te mostrara informacion completa del acceso de usuarios, la terminal que usa, termino de sesion, eventos del sistema y el estado actual del mismo, etc. wtmp : contiene el historio del archivo utmp btmp : registros solo intentos fallidos de sesion. Como no