El Certificado SSL es una tecnología que asegura la protección de la información transmitida entre un servidor web y un cliente web. Esto se logra a través del cifrado de datos, lo que reduce el riesgo de piratería en sitios y aplicaciones web. Un certificado SSL instalado en un servidor web garantiza esta conexión segura y contiene información sobre la clave pública del sitio web, su identidad y cualquier otra información relevante. Cualquier cliente que intente comunicarse con el servidor original debe consultar el archivo para obtener la clave pública y la identidad del sitio web.
Let’s Encrypt es una autoridad de certificación que ofrece certificados SSL/TLS gratuitos para facilitar el tráfico HTTP cifrado en servidores web. Proporciona una herramienta de software llamada certbot que simplifica la instalación de SSL automatizando gran parte del proceso. En esta guía se explica cómo usar el certificado SSL Let’s Encrypt Wildcard con Apache en Ubuntu/CentOS.
Instalar Certbot en Ubuntu | CentOS
Para instalar certbot en Ubuntu y CentOS vamos a ejecutar el comando como se muestra a continuación:
Servidor web Nginx
Ubuntu / Debian
apt install certbot python3-certbot-nginx
CentOS 8 / CentOS Stream 8 / Rocky Linux 8 / AlmaLinux 8
yum -y install epel-release
dnf config-manager --set-enabled powertools
yum -y install certbot python3-certbot-nginx nginx
CentOS 7
yum -y install epel-release
yum -y install certbot python2-certbot-nginx nginx
Servidor web Apache
Ubuntu / Debian
apt install certbot python3-certbot-apache
CentOS 8 / CentOS Stream 8 / Rocky Linux 8 / AlmaLinux 8
yum -y install epel-release
dnf config-manager --set-enabled powertools
yum -y install certbot python3-certbot-apache httpd
CentOS 7
yum -y install epel-release
yum -y install certbot python2-certbot-apache httpd
Verificar las configuraciones del servidor web
Nginx
nano /etc/nginx/conf.d/example.com.conf
Agregar el nombre del servidor y el alias aquí.
server_name example.com www.example.com;
Apache
Ubuntu / Debian
nano /etc/apache2/sites-available/example.com.conf
CentOS / Rocky Linux / AlmaLinux
nano /etc/httpd/conf.d/example.com.conf
Configurar el nombre de servidor y nombre de alias como se muestra a continuación:
ServerName example.com
ServerAlias www.example.com
Cómo emitir un certificado SSL Let’s Encrypt Wildcard usando Certbot (Modo manual)
Ahora que hemos verificado los hosts virtuales del servidor web, es el momento de solicitar el SSL Wildcard de Let’s Encrypt. Un SSL Wildcard es un tipo de certificado SSL que cubre el dominio principal y todos sus subdominios. Por ejemplo, si se tiene un SSL Wildcard para *.example.com, también se protegería something.example.com, one.example.com, etc.
Ejecutar el comando como se muestra a continuación para solicitar SSL para *.example.com.
certbot certonly \
--agree-tos \
--email someone@example.com \
--manual \
--preferred-challenges=dns \
-d *.example.com \
--server https://acme-v02.api.letsencrypt.org/directory
A continuación se describen los distintos parámetros utilizados en el comando anterior:
- «certonly»: esta opción nos asegura de que solo queremos emitir un certificado SSL. Si eliminamos esta opción del comando, Certbot emitirá el certificado SSL y también actualizará el archivo de host virtual para aplicar el certificado SSL.
- «agree-tos»: se usa para aceptar los términos de servicio de Let’s Encrypt.
- «email»: se proporciona un correo electrónico para almacenar el SSL en la cuenta de Let’s Encrypt. Se utilizará para notificarnos cuando el SSL esté a punto de caducar.
- «manual»: esto nos lleva a una forma interactiva de emitir el SSL en la que se nos solicitará más información.
- «preferred-challenges»: especifica el método de verificación SSL. El nombre de dominio debe verificarse antes de emitir el SSL. En este caso, estamos seleccionando DNS.
- «d»: se usa para especificar los dominios para emitir el certificado SSL.
- «server»: se utiliza para especificar el extremo de la API para emitir el certificado SSL.
Una vez que ejecutemos el comando, recibiremos un registro TXT que deberemos agregar al servidor DNS. Los registros se verán de la siguiente manera:
Renovación del certificado
Para renovarlo es necesario programar una tarea en crontab
crontab -e
Agregar el siguiente código:
certbot renew --pre-hook "service apache2 stop" --post-hook "service apache2 start"