Tareas #5257

Usar certificados SSL validos con Let's Encrypt en Zimbra

Added by Andrés Pías almost 5 years ago. Updated almost 4 years ago.

Status:CerradaStart date:04/07/2016
Priority:NormalDue date:
Assignee:Daniel Viñar Ulriksen% Done:

80%

Category:-Spent time:9.25 hours
Target version:-

Letsencrypt_zimbra.png - Pantalla en zimbra (43.9 KB) Daniel Viñar Ulriksen, 04/15/2016 04:31 PM

2869

Related issues

Related to Plataforma de servidores - Tareas #5191: Instructivo para instalar y configurar Let's Encrypt en n... Cerrada 03/07/2016
Related to Correo electrónico - Tareas #4621: Poner al correo certificados firmados por la CA Rechazada 07/11/2015
Related to Correo electrónico - Tareas #5428: Renovar certificados letsencrypt de zimbra En curso 03/01/2017

History

#1 Updated by Andrés Pías almost 5 years ago

  • Status changed from Nueva to En curso

Para instalar los certificados de Let's Script no necesariamente tenemos que hacerlo en el propio servidor Zimbra.
Podemos trabajar en otro servidor y luego copiarlos al servidor de destino: Godel o Dirac.
Seguimos este tutorial que nos indica como instalar un certificado SSL LetsEncrypt en Zimbra.

  • Instalamos Git y clonamos el repositorio:
    apt-get install git
    git clone https://github.com/letsencrypt/letsencrypt
    
  • Dese el directorio de la aplicación, si tenemos un Apache en el servidor directamente podemos configurar los certificados válidos para todos los Virtual Host configurados en ese lugar:
    cd letsencrypt
    #./letsencrypt-auto --apache
    

    Para Zimbra en cambio, tenemos que generar un certificado independiente del servicio web que utilicemos, porque existe un proceso automático para Zimbra, luego vamos a tener que ir al directorio donde están los certificados y copiarlos manualmente.
    ./letsencrypt-auto certonly --standalone -d godel.csic.edu.uy -d correo.cup.edu.uy -d cup.edu.uy -d correo.cut.edu.uy -d cut.edu.uy -d correo.cepe.edu.uy -d cepe.edu.uy -d correo.cerrolargo.udelar.edu.uy -d cerrolargo.udelar.edu.uy -d correo.cur.edu.uy  -d cur.edu.uy -d correo.cure.edu.uy -d cure.edu.uy -d correo.cucel.edu.uy -d cucel.edu.uy -d correo.interior.udelar.edu.uy -d interior.udelar.edu.uy -d correo.litoralnorte.udelar.edu.uy -d litoralnorte.udelar.edu.uy -d correo.noreste.udelar.edu.uy -d noreste.udelar.edu.uy -d correo.posgrados.udelar.edu.uy -d posgrados.udelar.edu.uy -d correo.tacuarembo.udelar.edu.uy -d tacuarembo.udelar.edu.uy
    

#2 Updated by Andrés Pías almost 5 years ago

(Tenemos también esta documentación que generó Rodrigo: Instructivo para instalar y configurar Let's Encrypt que luego hará que agregarlo lo que hagamos acá).

Si quisieramos generar los certificados desde un servidor externo al en cuestión (ej.: Bourdieu) tenemos que utilizar el comando manual:

./letsencrypt-auto certonly --manual -d godel.csic.edu.uy -d correo.cup.edu.uy -d cup.edu.uy -d correo.cut.edu.uy -d cut.edu.uy -d correo.cepe.edu.uy -d cepe.edu.uy -d correo.cerrolargo.udelar.edu.uy -d cerrolargo.udelar.edu.uy -d correo.cur.edu.uy  -d cur.edu.uy -d correo.cure.edu.uy -d cure.edu.uy -d correo.cucel.edu.uy -d cucel.edu.uy -d correo.interior.udelar.edu.uy -d interior.udelar.edu.uy -d correo.litoralnorte.udelar.edu.uy -d litoralnorte.udelar.edu.uy -d correo.noreste.udelar.edu.uy -d noreste.udelar.edu.uy -d correo.posgrados.udelar.edu.uy -d posgrados.udelar.edu.uy -d correo.tacuarembo.udelar.edu.uy -d tacuarembo.udelar.edu.uy

El inconveniente de esto es que tenemos que en el servidor destino (ej.: Godel) correr todos estos comandos:

Make sure your web server displays the following content at
http://correo.cup.edu.uy/.well-known/acme-challenge/-izDTmZRmKbH8IhAqVaQQP3u7me9j8ydpY3UKcaSlww before continuing:

-izDTmZRmKbH8IhAqVaQQP3u7me9j8ydpY3UKcaSlww.cBBhxSs5F-a3fPkhkqRyKBM3xvT5u0oBYrra8Atoo28

If you don't have HTTP server configured, you can run the following
command on the target server (as root):

mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge

cd /tmp/letsencrypt/public_html
printf "%s" -izDTmZRmKbH8IhAqVaQQP3u7me9j8ydpY3UKcaSlww.cBBhxSs5F-a3fPkhkqRyKBM3xvT5u0oBYrra8Atoo28 > .well-known/acme-challenge/-izDTmZRmKbH8IhAqVaQQP3u7me9j8ydpY3UKcaSlww
# run only once per server:
$(command -v python2 || command -v python2.7 || command -v python2.6) -c \
"import BaseHTTPServer, SimpleHTTPServer; \
s = BaseHTTPServer.HTTPServer(('', 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \
s.serve_forever()" 

#3 Updated by Andrés Pías almost 5 years ago

  • Related to Tareas #5191: Instructivo para instalar y configurar Let's Encrypt en nuestros servidores added

#4 Updated by Daniel Viñar Ulriksen almost 5 years ago

tenemos que solicitar el certificado para los dominios que utilizamos y que están configurados en el DNS a nuestros servidores.

En particular: imaps.cup.edu.uy y similares, smtps.cup.edu.uy y similares,
pero no: cup.edu.uy

Recapitulo:

./letsencrypt-auto certonly --standalone -d godel.csic.edu.uy -d correo.cup.edu.uy -d imaps.cup.edu.uy -d smtps.cup.edu.uy -d correo.cut.edu.uy -d correo.cepe.edu.uy -d correo.cerrolargo.udelar.edu.uy -d correo.cur.edu.uy -d correo.cure.edu.uy -d imaps.cure.edu.uy -d smtps.cure.edu.uy -d correo.cucel.edu.uy -d correo.interior.udelar.edu.uy -d correo.litoralnorte.udelar.edu.uy -d correo.noreste.udelar.edu.uy -d correo.posgrados.udelar.edu.uy  -d correo.tacuarembo.udelar.edu.uy

#5 Updated by Daniel Viñar Ulriksen almost 5 years ago

El comando que conviene ejecutar en Dirac:

/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 

#6 Updated by Daniel Viñar Ulriksen almost 5 years ago

Al instalar letsencrypt (con git) en Dirac, concluye al final:

No installers seem to be present and working on your system; fix that or try running letsencrypt with the "certonly" command

#7 Updated by Daniel Viñar Ulriksen almost 5 years ago

Pantalla en zimbra

Siguiendo paso a paso este tutorial, definí los certificados del zimbra.

#8 Updated by Andrés Pías almost 5 years ago

Procedimiento en Godel

Se detiene el servicio de jetty o nginx de zimbra

zmproxyctl stop
zmmailboxdctl stop

Obtenemos un certificado para todos los dominios
root@godel:~/letsencrypt# ./letsencrypt-auto certonly --standalone -d godel.csic.edu.uy -d correo.cup.edu.uy -d imaps.cup.edu.uy -d smtps.cup.edu.uy -d correo.cut.edu.uy -d correo.cepe.edu.uy -d correo.cerrolargo.udelar.edu.uy -d correo.cur.edu.uy -d correo.cure.edu.uy -d imaps.cure.edu.uy -d smtps.cure.edu.uy -d correo.cucel.edu.uy -d correo.interior.udelar.edu.uy -d correo.litoralnorte.udelar.edu.uy -d correo.noreste.udelar.edu.uy -d correo.posgrados.udelar.edu.uy  -d correo.tacuarembo.udelar.edu.uy

La respuesta:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/godel.csic.edu.uy/fullchain.pem. Your cert
   will expire on 2016-07-14. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - If you like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Vemos los certificados:

root@godel:/etc/letsencrypt/live/godel.csic.edu.uy# ls -altr
total 8
lrwxrwxrwx 1 root root   44 abr 15 16:14 privkey.pem -> ../../archive/godel.csic.edu.uy/privkey1.pem
lrwxrwxrwx 1 root root   46 abr 15 16:14 fullchain.pem -> ../../archive/godel.csic.edu.uy/fullchain1.pem
lrwxrwxrwx 1 root root   42 abr 15 16:14 chain.pem -> ../../archive/godel.csic.edu.uy/chain1.pem
lrwxrwxrwx 1 root root   41 abr 15 16:14 cert.pem -> ../../archive/godel.csic.edu.uy/cert1.pem

Let's Encrypt is almost perfect, but during the files the process built, they just add the chain.pem file without the root CA. You must to use the IdenTrust root Certificate and merge it after the chain.pem

Hay que bajar el certificado root IdenTrust para mezclarlo con chain.pem
Además hay que agregar BEGIN Y END certificate antes y despues del certificado bajado

Verficiamos:

root@godel:/etc/letsencrypt/live/godel.csic.edu.uy# nano chain.pem 
root@godel:/etc/letsencrypt/live/godel.csic.edu.uy#  /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

Hacemos el backup

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

Copiamos la clave privada en el directorio de zimbra:

cp /etc/letsencrypt/live/godel.csic.edu.uy/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key

Luego deployamos los certificados SSL:

root@godel:/etc/letsencrypt/live/godel.csic.edu.uy# /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...done.
** Saving server config key zimbraSSLPrivateKey...done.
** 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.

Se reinician todos los servicios

zmcontrol restart

Finalmente entramos y funciona perfecto: https://correo.cup.edu.uy/

#9 Updated by Daniel Viñar Ulriksen almost 5 years ago

  • Related to Tareas #4621: Poner al correo certificados firmados por la CA added

#10 Updated by Daniel Viñar Ulriksen over 4 years ago

  • Related to Tareas #5428: Renovar certificados letsencrypt de zimbra added

#11 Updated by Daniel Viñar Ulriksen over 4 years ago

  • Subject changed from Usar certificados SSL validos con Let's Scripts en Zimbra to Usar certificados SSL validos con Let's Encrypt en Zimbra

#12 Updated by Andrés Pías over 4 years ago

  • Status changed from En curso to Resuelta
  • Assignee changed from Andrés Pías to Daniel Viñar Ulriksen
  • % Done changed from 0 to 80

Ya agregué en Instructivo para instalar y configurar Let's Encrypt el procedimiento que aplicamos para Zimbra.
Paso para cerrar.

#13 Updated by Daniel Viñar Ulriksen almost 4 years ago

  • Status changed from Resuelta to Cerrada

#14 Updated by Daniel Viñar Ulriksen almost 4 years ago

Certificado de Dirac renovado y de Godel re-generado, e instalados en el día de hoy.

Próxima renovación: 3/9/17

Also available in: Atom PDF