Referencia rápida de renovación

Esto es una referencia rápida para la renovación de certificados en dirac.csic y godel2.interior, para no tener que leer toda la doc e interpretar. (Hacer bajo tutoreo si es la primera vez).

Primero los accesos y la sanidad del servidor:

Empezamos por un tunel o VPN para la consola zimbra, desde el punto oportuno al servidor:

ssh -L 7071:dirac:7071 bourdieu.csic.edu.uy

y un ssh en root al mismo servidor:
ssh root@dirac

ulvida@bourdieu:~$ ssh root@dirac
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-168-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Fri Mar 20 13:20:35 -03 2020

  System load:  0.73              Processes:           203
  Usage of /:   36.0% of 9.26GB   Users logged in:     0
  Memory usage: 65%               IP address for eth0: 164.73.68.8
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

New release '16.04.6 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

*** /dev/mapper/dirac-raiz will be checked for errors at next reboot ***
*** /dev/mapper/dirac-usr will be checked for errors at next reboot ***
*** /dev/mapper/dirac-var will be checked for errors at next reboot ***

No mail.
Last login: Sat Jan 25 10:12:50 2020 from bourdieu.csic.edu.uy
root@dirac:~# 

Y paramos los servicios:

root@dirac:~# service zimbra stop
Host dirac.csic.edu.uy
        Stopping vmware-ha...skipped.
                /opt/zimbra/bin/zmhactl missing or not executable.
        Stopping zmconfigd...Done.
        Stopping zimlet webapp...Done.
        Stopping zimbraAdmin webapp...Done.
        Stopping zimbra webapp...Done.
        Stopping service webapp...Done.
        Stopping stats...Done.
        Stopping mta...Done.
        Stopping spell...Done.
        Stopping snmp...Done.
        Stopping cbpolicyd...Done.
        Stopping archiving...Done.
        Stopping opendkim...Done.
        Stopping amavis...Done.
        Stopping antivirus...Done.
        Stopping antispam...Done.
        Stopping proxy...Done.
        Stopping memcached...Done.
        Stopping mailbox...Done.
        Stopping logger...Done.
        Stopping dnscache...Done.
        Stopping ldap...Done.

Si al conectarse como root vemos mensajes de este tipo:

** /dev/mapper/dirac-raiz will be checked for errors at next reboot ***

Conviene un reboot sereno luego de parar los servicios.
Al reiniciar los servicios zimbra arrancan, conviene volverlos a detener.

Con:

ulvida@bourdieu:~$ ping dirac

Vemos cuando el servidor se detiene y cuando vuelve.

Renovar certificados

En un servidor con una versión reciente y empaquetada (lo que no es el caso de dirac.csic ni godel2.interior) alcanzaría, para renovar los certificados con ingresar:
certbot renew

En Dirac y Godel (Ubuntu 14.04) conviene volver a generar los certificados (¡mucho cuidado con la lista exacta de dominios!):
  • Dirac:
    root@dirac:~/letsencrypt# ./letsencrypt-auto certonly --standalone -d dirac.csic.edu.uy -d correo.csic.edu.uy -d imaps.csic.edu.uy -d smtps.csic.edu.uy -d correo.cci.edu.uy -d imaps.cci.edu.uy -d smtps.cci.edu.uy -d correo.ei.udelar.edu.uy -d imaps.ei.udelar.edu.uy -d smtps.ei.udelar.edu.uy -d correo.chea.udelar.edu.uy
    

En dirac me acaba de preguntar y respondí 'E':

Do you want to expand and replace this existing certificate with the new
certificate?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(E)xpand/(C)ancel: E

Respondió:
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/dirac.csic.edu.uy-0013/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/dirac.csic.edu.uy-0013/privkey.pem
   Your cert will expire on 2020-06-21. To obtain a new or tweaked
   version of this certificate in the future, simply run
   letsencrypt-auto again. To non-interactively renew *all* of your
   certificates, run "letsencrypt-auto 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


Por ende es con los archivos en /etc/letsencrypt/live/dirac.csic.edu.uy-0013/ que debemos trabajar en adelante.

Adecuación de certifiacados antes de importación en zimbra:
Con su editor preferido, editen chain.pem (en este caso en: /etc/letsencrypt/live/dirac.csic.edu.uy-0013/) y agreguen al final del archivo, sin tocar nada de lo que está y sin agregar líneas en blanco, exactamente lo que sigue:

-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----

Verifiquen:
/opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem
** Verifying cert.pem against privkey.pem
Certificate (cert.pem) and private key (privkey.pem) match.
Valid Certificate: cert.pem: OK

Importación de los certificados a Zimbra:

Se hace primero un respaldo de lo que está en producción en Zimbra:

cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.$(date "+%Y%m%d")

Se copia la clave privada:
cp privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key

Se importan los certificados al Zimbra:
root@dirac:/etc/letsencrypt/live/dirac.csic.edu.uy-0013# /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem 
** Verifying cert.pem against /opt/zimbra/ssl/zimbra/commercial/commercial.key
Certificate (cert.pem) and private key (/opt/zimbra/ssl/zimbra/commercial/commercial.key) match.
Valid Certificate: cert.pem: OK
** Copying cert.pem to /opt/zimbra/ssl/zimbra/commercial/commercial.crt
** Appending ca chain chain.pem to /opt/zimbra/ssl/zimbra/commercial/commercial.crt
** Importing certificate /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt to CACERTS as zcs-user-commercial_ca...done.
** NOTE: mailboxd must be restarted in order to use the imported certificate.
** Saving server config key zimbraSSLCertificate...failed.
** Saving server config key zimbraSSLPrivateKey...failed.
** Installing mta certificate and key...done.
** Installing slapd certificate and key...done.
** Installing proxy certificate and key...done.
** Creating pkcs12 file /opt/zimbra/ssl/zimbra/jetty.pkcs12...done.
** Creating keystore file /opt/zimbra/mailboxd/etc/keystore...done.
** Installing CA to /opt/zimbra/conf/ca...done.

Reinicio y verificación de servicios

Reiniciamos los servicios con:

su - zimrba
zmcontrol start

O simplemente, en root, con:
service zimbra start

Verificamos que todos los accesos para personas usuarias finales funcionan correctamente.