Instalar Let's Encrypt en un servidor Linux con Certbot es un proceso de menos de 10 minutos que activa HTTPS gratuito con renovación automática. El proceso varía según el servidor web (Nginx o Apache), el sistema operativo (Ubuntu, Debian, CentOS/AlmaLinux) y si necesitas un certificado estándar para dominios específicos o un certificado wildcard para todos los subdominios. Esta guía cubre todos los escenarios principales con los comandos exactos para cada uno, más la instalación desde el panel de Plesk para quienes no tienen acceso SSH.

Requisitos previos antes de instalar Let's Encrypt

Antes de empezar, verifica que cumples estos requisitos. Si alguno no se cumple, el proceso de validación fallará:

RequisitoCómo verificarloPor qué es necesario
El dominio resuelve a la IP del servidordig tudominio.com A +short debe devolver la IP del servidorLet's Encrypt necesita acceder al servidor usando el nombre de dominio para el HTTP-01 challenge
El puerto 80 está abierto y accesible desde internetcurl -I http://tudominio.com desde otro equipoEl HTTP-01 challenge accede al servidor en el puerto 80
El servidor web (Nginx o Apache) está instalado y funcionandosudo systemctl status nginx o sudo systemctl status apache2Certbot necesita el servidor web activo para colocar los archivos del challenge y modificar la configuración
Acceso SSH con privilegios sudo al servidorConectarse por SSH y ejecutar sudo whoamiCertbot necesita privilegios de administrador para instalar el certificado y modificar la configuración del servidor web
Ubuntu 20.04, 22.04, 24.04 / Debian 11, 12 / CentOS 8+ / AlmaLinux 8+cat /etc/os-releaseLos comandos de instalación de Certbot varían según el sistema operativo

Si usas Cloudflare: el proxy de Cloudflare (nube naranja) puede interferir con el HTTP-01 challenge porque Cloudflare sirve los archivos del challenge desde su caché en lugar de pasarlos al servidor. La solución más sencilla es desactivar temporalmente el proxy de Cloudflare para el dominio (cambiar la nube de naranja a gris) durante la emisión del certificado. Una vez instalado el certificado, vuelve a activar el proxy.

Instalación 1: Let's Encrypt en Nginx sobre Ubuntu/Debian

Este es el escenario más común en 2026: un servidor Ubuntu o Debian con Nginx como servidor web.

Paso 1: Instalar Certbot y el plugin de Nginx

# Actualizar los repositorios del sistema:
sudo apt update

# Instalar Certbot y el plugin de Nginx:
sudo apt install certbot python3-certbot-nginx -y

# Verificar que Certbot se instaló correctamente:
certbot --version
# Debe mostrar algo como: certbot 2.x.x

Paso 2: Verificar la configuración de Nginx

Certbot necesita que Nginx tenga un bloque server configurado para el dominio. Verifica que existe:

# Ver los archivos de configuración de sitios activos en Nginx:
ls /etc/nginx/sites-enabled/

# Ver la configuración del sitio:
cat /etc/nginx/sites-enabled/tudominio.conf

# La configuración mínima que debe existir:
server {
    listen 80;
    server_name tudominio.com www.tudominio.com;
    root /var/www/html/tudominio;
    index index.php index.html;
}

# Verificar que la configuración de Nginx no tiene errores:
sudo nginx -t

Paso 3: Obtener e instalar el certificado con Certbot

# Obtener el certificado para el dominio con www:
sudo certbot --nginx -d tudominio.com -d www.tudominio.com

# Certbot te preguntará:
# 1. Tu dirección de email (para avisos de caducidad): introduce un email válido
# 2. Si aceptas los términos de servicio: Y
# 3. Si quieres compartir tu email con la EFF: N (opcional)
# 4. Si quieres redirigir todo HTTP a HTTPS: 2 (Redirect, recomendado)

# Certbot hace automáticamente:
# - Verifica el dominio mediante HTTP-01 challenge
# - Descarga el certificado de Let's Encrypt
# - Modifica la configuración de Nginx para usar el certificado
# - Configura la redirección de HTTP a HTTPS (si elegiste la opción 2)
# - Configura la renovación automática

Paso 4: Verificar que el certificado está instalado correctamente

# Verificar que el sitio responde en HTTPS:
curl -I https://tudominio.com
# Debe mostrar: HTTP/2 200

# Verificar que HTTP redirige a HTTPS:
curl -I http://tudominio.com
# Debe mostrar: HTTP/1.1 301 Moved Permanently
# y: location: https://tudominio.com/

# Ver los detalles del certificado instalado:
sudo certbot certificates

# Verificar la fecha de caducidad directamente:
echo | openssl s_client -connect tudominio.com:443 2>/dev/null | openssl x509 -noout -dates

Paso 5: Verificar la renovación automática

# Simular una renovación (sin ejecutarla realmente):
sudo certbot renew --dry-run

# La salida debe terminar con:
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Congratulations, all simulated renewals succeeded:
#   /etc/letsencrypt/live/tudominio.com/fullchain.pem (success)

# Ver el timer de renovación automática de Certbot:
sudo systemctl status certbot.timer

# Ver cuándo se ejecutará la próxima renovación:
sudo systemctl list-timers | grep certbot

La configuración que genera Certbot automáticamente en Nginx después del proceso:

# Bloque server para HTTP (redirección a HTTPS):
server {
    listen 80;
    server_name tudominio.com www.tudominio.com;

    # Certbot añade esta redirección automáticamente:
    return 301 https://$host$request_uri;
}

# Bloque server para HTTPS:
server {
    listen 443 ssl;
    server_name tudominio.com www.tudominio.com;
    root /var/www/html/tudominio;

    # Rutas del certificado (gestionadas por Certbot):
    ssl_certificate /etc/letsencrypt/live/tudominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/tudominio.com/privkey.pem;

    # Parámetros de seguridad recomendados por Certbot:
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # ... resto de la configuración del sitio
}

Instalación 2: Let's Encrypt en Apache sobre Ubuntu/Debian

Paso 1: Instalar Certbot y el plugin de Apache

sudo apt update
sudo apt install certbot python3-certbot-apache -y

# Verificar la instalación:
certbot --version

Paso 2: Activar los módulos necesarios de Apache

# Activar mod_ssl y mod_rewrite (necesarios para HTTPS y redirecciones):
sudo a2enmod ssl
sudo a2enmod rewrite
sudo systemctl restart apache2

# Verificar que están activos:
apache2ctl -M | grep -E "ssl|rewrite"

Paso 3: Obtener e instalar el certificado

# Obtener el certificado para Apache:
sudo certbot --apache -d tudominio.com -d www.tudominio.com

# Certbot detecta automáticamente la configuración de Apache,
# instala el certificado y configura el VirtualHost HTTPS.
# Al igual que con Nginx, te preguntará si quieres
# redirigir HTTP a HTTPS (elige la opción 2: Redirect).

Paso 4: Verificar la instalación

# Verificar la configuración de Apache:
sudo apachectl configtest
# Debe mostrar: Syntax OK

# Verificar los VirtualHosts configurados:
sudo apachectl -S | grep tudominio

# Recargar Apache para aplicar los cambios:
sudo systemctl reload apache2

# Verificar que HTTPS funciona:
curl -I https://tudominio.com

Instalación 3: Let's Encrypt en CentOS 8 / AlmaLinux 8 / Rocky Linux

# Instalar EPEL (Extra Packages for Enterprise Linux):
sudo dnf install epel-release -y

# Instalar Certbot:
sudo dnf install certbot -y

# Para Nginx:
sudo dnf install python3-certbot-nginx -y
sudo certbot --nginx -d tudominio.com -d www.tudominio.com

# Para Apache:
sudo dnf install python3-certbot-apache -y
sudo certbot --apache -d tudominio.com -d www.tudominio.com

# Activar el timer de renovación automática:
sudo systemctl enable --now certbot-renew.timer

# Verificar la renovación:
sudo certbot renew --dry-run

Instalación 4: Certificado wildcard con DNS-01 challenge

Un certificado wildcard (*.tudominio.com) cubre todos los subdominios del dominio con un único certificado. Es especialmente útil cuando tienes múltiples subdominios o cuando añades subdominios con frecuencia. Requiere el método DNS-01 challenge, que se puede automatizar con plugins DNS de Certbot.

Opción A: Con plugin DNS de Cloudflare (completamente automático)

# Instalar el plugin DNS de Cloudflare para Certbot:
sudo apt install python3-certbot-dns-cloudflare -y

# Crear el archivo de credenciales de Cloudflare:
mkdir -p ~/.secrets
cat > ~/.secrets/cloudflare.ini << 'EOF'
# Cloudflare API token (recomendado sobre API key global):
dns_cloudflare_api_token = TU_API_TOKEN_DE_CLOUDFLARE
EOF

# Proteger el archivo (solo el propietario puede leerlo):
chmod 600 ~/.secrets/cloudflare.ini

# Obtener el certificado wildcard:
sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
  -d tudominio.com \
  -d *.tudominio.com \
  --preferred-challenges dns-01

# El certificado cubre:
# - tudominio.com (dominio raíz)
# - *.tudominio.com (todos los subdominios: www, blog, api, mail, etc.)

# Configurar Nginx para usar el certificado wildcard:
# En /etc/nginx/sites-available/tudominio.conf:
server {
    listen 443 ssl;
    server_name tudominio.com www.tudominio.com api.tudominio.com blog.tudominio.com;

    ssl_certificate /etc/letsencrypt/live/tudominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/tudominio.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

Cómo crear el API token de Cloudflare (solo los permisos necesarios)

  1. Accede al panel de Cloudflare y ve a Mi Perfil > Tokens de API.
  2. Haz clic en Crear token.
  3. Selecciona la plantilla Edit zone DNS.
  4. En "Recursos de zona", selecciona "Zona específica" y elige tu dominio.
  5. Haz clic en Continuar con el resumen y luego en Crear token.
  6. Copia el token generado y guárdalo en el archivo ~/.secrets/cloudflare.ini.

Opción B: DNS-01 manual (para cualquier proveedor DNS)

# Obtener el certificado wildcard en modo manual:
sudo certbot certonly \
  --manual \
  --preferred-challenges dns \
  -d tudominio.com \
  -d *.tudominio.com

# Certbot te mostrará algo como:
# Please deploy a DNS TXT record under the name:
# _acme-challenge.tudominio.com
# with the following value:
# abc123def456ghi789...
#
# Once this is deployed, press the Enter key to continue

# Ve al panel de gestión DNS de tu dominio y crea el registro:
# Tipo: TXT
# Nombre: _acme-challenge
# Valor: abc123def456ghi789...
# TTL: 60 (el mínimo posible para que propague rápido)

# Espera 1-2 minutos a que el registro DNS propague:
dig TXT _acme-challenge.tudominio.com

# Cuando el valor TXT sea visible, pulsa Enter en Certbot
# para que complete la validación y emita el certificado.

Limitación del modo manual: el certificado wildcard obtenido en modo manual no se puede renovar automáticamente, porque la renovación requiere crear un nuevo registro TXT cada vez. Para renovación automática de wildcards, necesitas un plugin DNS compatible con tu proveedor (Cloudflare, Route53, DigitalOcean, Namecheap, y muchos más tienen plugins disponibles).

Instalación 5: Let's Encrypt en Plesk (sin SSH)

En los servidores de sys4net, que usan Plesk como panel de control, Let's Encrypt está completamente integrado. No necesitas SSH ni conocimientos de línea de comandos:

Paso 1: Accede a la sección SSL/TLS del dominio

  1. Accede a Plesk con tus credenciales.
  2. Ve a Websites y Dominios.
  3. Selecciona el dominio donde quieres instalar el certificado.
  4. Haz clic en SSL/TLS Certificates.

Paso 2: Instala Let's Encrypt

  1. En la sección "Let's Encrypt", haz clic en Instalar.
  2. Introduce tu dirección de email (para los avisos de caducidad).
  3. Marca las opciones que necesites:
    • Asegurar el dominio www: marca esta opción para cubrir también www.tudominio.com.
    • Asegurar el webmail: marca esta opción para cubrir webmail.tudominio.com.
    • Asegurar el servidor de correo: para cubrir mail.tudominio.com.
  4. Haz clic en Obtener de forma gratuita.

Paso 3: Activa la redirección HTTPS

  1. Vuelve a la pantalla principal del dominio en Plesk.
  2. Haz clic en Hosting & DNS.
  3. Activa la opción "Redirigir de HTTP a HTTPS".
  4. Haz clic en Guardar.

Plesk configura automáticamente la renovación automática del certificado. No necesitas configurar nada más.

Instalación 6: Let's Encrypt para WordPress

Instalar el certificado SSL en el servidor es solo la mitad del trabajo cuando usas WordPress. También necesitas que WordPress use correctamente las URLs HTTPS en todo el sitio:

Paso 1: Instala el certificado SSL en el servidor

Sigue uno de los métodos anteriores según tu configuración (Certbot con Nginx o Apache, o Plesk). El certificado debe estar instalado y funcionando antes de continuar con WordPress.

Paso 2: Actualiza las URLs de WordPress en wp-config.php

# En wp-config.php, añade o modifica estas líneas ANTES de "/* That's all, stop editing! */":
define('WP_HOME', 'https://tudominio.com');
define('WP_SITEURL', 'https://tudominio.com');

# Si el servidor está detrás de un proxy inverso (Nginx delante de Apache, Cloudflare):
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
    $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

Paso 3: Actualiza las URLs en la base de datos

# Con WP-CLI (método más rápido y seguro):
wp search-replace 'http://tudominio.com' 'https://tudominio.com' --skip-columns=guid --report-changed-only

# Verifica que las URLs se actualizaron:
wp option get siteurl
wp option get home
# Ambas deben mostrar: https://tudominio.com

# Si no tienes WP-CLI: usa el plugin Better Search Replace desde el panel de WordPress:
# Plugins > Añadir nuevo > buscar "Better Search Replace" > instalar y activar
# Herramientas > Better Search Replace
# Buscar: http://tudominio.com
# Reemplazar: https://tudominio.com
# Seleccionar todas las tablas
# Hacer clic en "Ejecutar búsqueda/reemplazo"

Paso 4: Verifica que no hay contenido mixto

# Verifica que no quedan URLs HTTP en el HTML del sitio:
curl -s https://tudominio.com | grep -o 'src="http://[^"]*"\|href="http://[^"]*"' | head -20

# En el navegador:
# Abre Chrome DevTools (F12) > Console
# Busca mensajes "Mixed Content" que indiquen recursos HTTP en la página HTTPS

# Si encuentras contenido mixto después de la búsqueda-reemplazo en la base de datos,
# revisa también:
# - Archivos de tema (functions.php, header.php): URLs hardcodeadas en el código
# - Plugins que generan URLs dinámicas sin respetar el protocolo activo
# - Archivos de importación o CSV con URLs antiguas

Paso 5: Vacía la caché de WordPress y del servidor

# Si usas un plugin de caché (WP Super Cache, WP Rocket, LiteSpeed Cache):
# Vacía la caché completa desde el panel del plugin.

# Si usas WP-CLI:
wp cache flush

# Si tienes FastCGI cache en Nginx:
sudo find /var/cache/nginx -type f -delete
sudo systemctl reload nginx

# Si usas Cloudflare:
# Caching > Configuration > Purge Everything

Configuración SSL/TLS avanzada para máxima seguridad

Certbot instala una configuración SSL básica pero funcional. Para obtener una calificación A+ en SSL Labs y seguir las mejores prácticas de seguridad de 2026, aplica esta configuración adicional:

Configuración Nginx optimizada para seguridad y rendimiento

# En /etc/nginx/nginx.conf, dentro del bloque http:
# Protocolos TLS: solo 1.2 y 1.3
ssl_protocols TLSv1.2 TLSv1.3;

# Algoritmos de cifrado seguros (sin cifrados débiles):
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;  # TLS 1.3 elige el cifrado, no el servidor

# Sesiones TLS: mejora el rendimiento de reconexiones:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;  # Más seguro desactivado (Forward Secrecy estricto)

# HSTS: obliga al navegador a usar HTTPS siempre para este dominio:
# (Añadir solo cuando estés seguro de que el certificado SSL nunca caducará sin renovar)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# Otras cabeceras de seguridad recomendadas:
add_header X-Frame-Options DENY always;
add_header X-Content-Type-Options nosniff always;
add_header Referrer-Policy strict-origin-when-cross-origin always;

# OCSP Stapling: mejora el rendimiento de la verificación del certificado:
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;

Generar un parámetro Diffie-Hellman seguro

# Generar un parámetro DH de 4096 bits (más seguro que el de 2048 de Certbot):
# (Este proceso puede tardar varios minutos)
sudo openssl dhparam -out /etc/letsencrypt/ssl-dhparams.pem 4096

# Actualizar la referencia en la configuración de Nginx:
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

# Aplicar los cambios:
sudo nginx -t && sudo systemctl reload nginx

Verificar la calificación SSL con SSL Labs

# Desde la línea de comandos usando la API de SSL Labs:
curl -s "https://api.ssllabs.com/api/v3/analyze?host=tudominio.com&startNew=on" | python3 -m json.tool | grep -E "grade|status"

# O accede directamente a:
# https://www.ssllabs.com/ssltest/analyze.html?d=tudominio.com
# Una configuración correcta debe obtener: A o A+

HSTS: HTTP Strict Transport Security

HSTS es una cabecera de seguridad que indica al navegador que siempre debe usar HTTPS para acceder a ese dominio, durante el período especificado. Una vez que el navegador recibe esta cabecera, nunca intentará conectarse por HTTP, incluso si el usuario escribe la URL sin el prefijo https://.

# Cabecera HSTS básica (6 meses):
add_header Strict-Transport-Security "max-age=15768000" always;

# Cabecera HSTS completa (2 años, con subdominios y preload):
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# IMPORTANTE antes de activar HSTS:
# 1. Asegúrate de que HTTPS funciona perfectamente en el dominio Y todos sus subdominios
# 2. Asegúrate de que la renovación automática del certificado está funcionando
# 3. Empieza con un max-age corto (86400 = 1 día) para probar, 
#    y auméntalo gradualmente si todo funciona bien
# 4. El "preload" requiere registrarse en https://hstspreload.org/
#    para que el dominio sea incluido en la lista HSTS preload de Chrome

Precaución con HSTS: una vez que el navegador de un usuario recibe la cabecera HSTS, intentará acceder siempre por HTTPS durante el período indicado. Si el certificado caduca y no puedes renovarlo, los usuarios no podrán acceder al sitio en absoluto (ni siquiera por HTTP) durante ese período. Activa HSTS solo cuando estés completamente seguro de que la renovación automática funciona correctamente.

Gestión de múltiples dominios con Certbot

# Obtener un certificado para múltiples dominios en un solo certificado (SAN):
sudo certbot --nginx \
  -d tudominio.com \
  -d www.tudominio.com \
  -d blog.tudominio.com \
  -d api.tudominio.com

# Ver todos los certificados instalados en el servidor:
sudo certbot certificates

# Ampliar un certificado existente para añadir un nuevo dominio:
sudo certbot --nginx -d tudominio.com -d www.tudominio.com -d nuevo-subdominio.tudominio.com

# Revocar un certificado (si fue comprometido o ya no lo necesitas):
sudo certbot revoke --cert-path /etc/letsencrypt/live/tudominio.com/cert.pem

# Eliminar un certificado del sistema (después de revocarlo):
sudo certbot delete --cert-name tudominio.com

Monitorización de la caducidad de certificados

Aunque la renovación automática debería gestionar todo, es una buena práctica monitorizar activamente la caducidad de los certificados:

# Script para verificar la caducidad de un certificado y alertar si quedan menos de 30 días:
#!/bin/bash
DOMINIO="tudominio.com"
DIAS_ALERTA=30

CADUCIDAD=$(echo | openssl s_client -connect $DOMINIO:443 2>/dev/null | \
            openssl x509 -noout -enddate | cut -d= -f2)
TIMESTAMP_CADUCIDAD=$(date -d "$CADUCIDAD" +%s)
TIMESTAMP_HOY=$(date +%s)
DIAS_RESTANTES=$(( ($TIMESTAMP_CADUCIDAD - $TIMESTAMP_HOY) / 86400 ))

if [ $DIAS_RESTANTES -lt $DIAS_ALERTA ]; then
    echo "ALERTA: El certificado de $DOMINIO caduca en $DIAS_RESTANTES días ($CADUCIDAD)"
    # Añadir aquí: envío de email, notificación a Slack, etc.
else
    echo "OK: El certificado de $DOMINIO caduca en $DIAS_RESTANTES días ($CADUCIDAD)"
fi

Preguntas frecuentes sobre la instalación de Let's Encrypt

¿Puedo instalar Let's Encrypt si mi dominio usa Cloudflare?

Sí, pero hay que hacerlo correctamente. Si el proxy de Cloudflare (nube naranja) está activo durante la emisión del certificado con HTTP-01 challenge, la validación puede fallar porque Cloudflare sirve los archivos del challenge desde su caché en lugar de pasarlos a tu servidor. La solución más sencilla es desactivar temporalmente el proxy de Cloudflare para el dominio (cambiar la nube de naranja a gris) durante la emisión, y volver a activarlo una vez que el certificado esté instalado. La alternativa es usar el DNS-01 challenge con el plugin de Cloudflare para Certbot, que no requiere desactivar el proxy.

¿Qué hago si Certbot falla con el error "too many failed authorizations"?

Este error indica que Let's Encrypt ha bloqueado temporalmente las emisiones para tu dominio porque ha habido demasiados intentos fallidos de validación en poco tiempo. El bloqueo dura una hora. Antes de volver a intentarlo, identifica por qué falló la validación: verifica que el dominio resuelve a la IP del servidor, que el puerto 80 está abierto y accesible desde internet, y que el servidor web está funcionando correctamente. Una vez identificado y corregido el problema, espera una hora y vuelve a ejecutar Certbot.

¿Certbot modifica la configuración de Nginx o Apache de forma permanente?

Sí. Certbot modifica los archivos de configuración del servidor web para añadir las directivas SSL y, si eliges la opción de redirección, para añadir el bloque de redirección HTTP a HTTPS. Certbot añade comentarios en los archivos modificados para marcar los bloques que añadió, lo que facilita identificar qué cambios hizo. Los archivos originales de configuración se hacen backup antes de modificarlos.

¿Puedo tener múltiples dominios en el mismo servidor con certificados Let's Encrypt diferentes?

Sí, perfectamente. Certbot puede gestionar múltiples certificados independientes en el mismo servidor, uno por dominio o uno para varios dominios (SAN). Cada dominio tiene su propio certificado en /etc/letsencrypt/live/nombre-del-certificado/ y Certbot los renueva todos automáticamente de forma independiente. El único límite es el de 50 certificados por dominio registrado por semana de Let's Encrypt.

¿Qué pasa con el certificado si migro el sitio a otro servidor?

Los certificados de Let's Encrypt están ligados al servidor donde se instalaron, no al dominio en abstracto. Si migras el sitio a otro servidor, necesitas obtener un nuevo certificado en el nuevo servidor. El proceso es el mismo que la instalación inicial. Los certificados del servidor antiguo caducarán automáticamente a los 90 días si no se renuevan, pero puedes revocarlos explícitamente con certbot revoke si quieres.

¿Es necesario abrir el puerto 443 en el firewall del servidor?

Sí. Para que HTTPS funcione, el puerto 443 debe estar abierto en el firewall del servidor. El puerto 80 también debe estar abierto para el HTTP-01 challenge durante la emisión del certificado y para las redirecciones HTTP a HTTPS. En servidores Ubuntu/Debian con UFW:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status

En servidores CentOS/AlmaLinux con firewalld:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload