Files
wiki-data/tecnica/servidores/correo_certificados_certbot.md

5.7 KiB
Raw Blame History

iRedMail - Certificados gratis Lets Encrypt con certbot

1 - Instalar certbot

  apt install -y certbot

Con este comando como usuario root verificamos el proceso de solicitud con dry-run argumentos. Se imprimirá un texto en la consola para hacerle algunas preguntas simples. Léalas con atención y respóndalas.

certbot certonly webroot dry-run -w /var/www/html -d mail.eldia.com

Si nu informó errores en la consola, entonces lo volvemos a ejecutar pero sin el parametro dry-run

  certbot certonly --webroot -w /var/www/html -d mail.eldia.com

Si el comando finalizó correctamente, creará y almacenará los archivos de certificado en /etc/letsencrypt/live/mail.eldia.com/

Archivos de certificado creados:

  cert.pem    Certificado de servidor.
  chain.pem   Certificado o certificados intermedios adicionales que los navegadores web necesitarán para validar el certificado del servidor.
  fullchain.pem   Todos los certificados, incluido el certificado de servidor (también conocido como certificado de hoja o certificado de entidad final). El certificado de servidor es el primero en este archivo, seguido de los intermedios.
  privkey.pem Clave privada para el certificado.

Los directorios /etc/letsencrypt/live/ y /etc/letsencrypt/archive/ son propiedad del usuario y grupo root, con el permiso 0700 de manera predeterminada, lo que significa que otros usuarios no pueden acceder a ellos, incluidos los usuarios del demonio que se utilizan para ejecutar servicios de red como Postfix/Dovecot/OpenLDAP/MariaDB/PostgreSQL. Es necesario establecer el permiso en 0755 para que otras aplicaciones puedan acceder a ellos.

  chmod 0755 /etc/letsencrypt/{live,archive}

Utilizar el certificado Lets Encrypt

La forma más fácil y rápida de utilizar el certificado Lets Encrypt es creando enlaces de símbolos al certificado SSL autofirmado generado por el instalador de iRedMail y luego reiniciar los servicios para cargar los archivos del certificado.

  mv /etc/ssl/certs/iRedMail.crt{,.bak}       # Backup. Rename iRedMail.crt to iRedMail.crt.bak
  mv /etc/ssl/private/iRedMail.key{,.bak}     # Backup. Rename iRedMail.key to iRedMail.key.bak
  ln -s /etc/letsencrypt/live/mail.eldia.com/fullchain.pem /etc/ssl/certs/iRedMail.crt
  ln -s /etc/letsencrypt/live/mail.eldia.com/privkey.pem /etc/ssl/private/iRedMail.key

Ahora reinicie los servicios Postfix / Dovecot / Nginx para usar el certificado:

  systemctl restart postfix dovecot nginx

Verificar el certificado

Para verificar el certificado SSL utilizado en Postfix (servidor SMTP) y Dovecot, inicie una aplicación de cliente de correo (MUA, por ejemplo, Outlook, Thunderbird) y cree una cuenta de correo electrónico. Asegúrese de haber configurado correctamente MUA para conectarse al servidor de correo. Si el certificado SSL no es válido, MUA le advertirá. Para el servidor web Apache/Nginx, puede acceder a su sitio web con su navegador web favorito, que debería mostrarle el estado del certificado SSL. O bien, utilice otro sitio web para probarlo, por ejemplo: https://www.ssllabs.com/ssltest/index.html (ingrese el nombre de su servidor web, envíelo y espere el resultado).

Renovar el certificado automáticamente El certificado se puede renovar manualmente con el comando certbot renew, o ejecutar el mismo comando en una tarea cron diaria o semanal para renovarlo automáticamente. Solo se renovarán aquellos certificados que caduquen en menos de 30 días. Las aplicaciones que usan certificados SSL deben reiniciarse para cargar los archivos de certificados renovados.

El certificado se puede renovar manualmente con el comando certbot renew, o ejecutar el mismo comando en una tarea cron diaria o semanal para renovarlo automáticamente. Solo se renovarán aquellos certificados que caduquen en menos de 30 días. Las aplicaciones que usan certificados SSL deben reiniciarse para cargar los archivos de certificados renovados.

Si se renovó el certificado, la clave privada /etc/letsencrypt/live/eldia.com/privkey.pem se vuelve a crear y se vincula al archivo bajo /etc/letsencrypt/archive/eldia.com/privkey<X>.pem ( <X>es un número de dígito), pero todos los archivos vinculados a /etc/letsencrypt/live/eldia.com/privkey.pem se dejaron en el anterior, por lo que debemos actualizar todos los archivos vinculados a /etc/letsencrypt/live/eldia.com/privkey.pem con el argumento post-hookjust después de la renovación para asegurarnos de que estén vinculados al correcto.

Aquí hay un ejemplo de trabajo cron que se ejecuta a los lunes de cada mes entre los días 10 y 28 a las 10:00 a. m. y reinicia postfix/nginx/dovecot después de la renovación:

  00 10 10-28 * 1 certbot certificates; certbot renew ; /usr/bin/systemctl restart postfix dovecot nginx

Configuración de certificados en diferentes aplicaciones

POSTFIX - Archivo /etc/postfix/main.cf

  smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt
  smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
  smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt

DOVECOT - Archivo /etc/dovecot/dovecot.conf

  ssl = required
  ssl_cert = </etc/ssl/certs/iRedMail.crt
  ssl_key = </etc/ssl/private/iRedMail.key
  ssl_ca = </etc/ssl/certs/iRedMail.crt

NGINX - Archivo /etc/nginx/templates/ssl.tmpl

  ssl_certificate /etc/ssl/certs/iRedMail.crt;
  ssl_certificate_key /etc/ssl/private/iRedMail.key;

OPENLDAP - OPCIONAL - Archivo /etc/ldap/slapd.conf.

Si OpenLDAP está escuchando en el host local y no es accesible desde la red externa.

  TLSCACertificateFile /etc/ssl/certs/iRedMail.crt
  TLSCertificateKeyFile /etc/ssl/private/iRedMail.key
  TLSCertificateFile /etc/ssl/certs/iRedMail.crt