Zimbra autenticación con AD (Samba4) de forma segura (SSL/TLS)

Muchos son los que me han preguntado como se puede configurar zimbra para autenticar contra un directorio activo (AD), y que la conexión entre estos dos sistemas se realicé de forma segura empleando SSL/TLS en la comunicación LDAP. Debido a que estos sistemas cuando se instalan generan un certificado autofirmado y que no es reconocido por una autoridad certificadora de confianza, ya sea Samba4 como AD, o el propio AD de microsoft, al configurar la comunicación de zimbra con estos sistemas en el wizard de configurar la autenticación estos fallarán por un error de confianza con el certificado. Es por eso que le explico en este tutorial de forma muy fácil como solucionar este pequeño inconveniente. Como lo que empleo en mi infraestructura de redes como controlador de dominio AD es Samba4 será mucho más fácil de obtener el certificado y demás.

Al configurar zimbra y habilitar el checkbox Use SSL, y darle next, llenamos todos los campos al llegar al test y probamos un usuario de nuestro directorio para comprobar que la autenticación es correcta, nos lanzará el siguiente error:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: d2:CN18:dc1.dominio.com:O20:Samba Administration2:OU48:Samba - temporary autogenerated HOST certificate6:accept4:true5:alias28:dc1.dominio.com:-527EB0A94:fromi1464828333000e4:host18:dc1.dominio.com3:icn18:dc1.dominio.com2:io20:Samba Administration3:iou46:Samba - temporary autogenerated CA certificate3:md532:38261B0A4B28D8AEAF0F75C664FD940D8:mismatch5:false1:s9:-527EB0A94:sha140:3B506AB7F09FB27207C044854CF6EC05290D1ED42:toi1525308333000ee

Esto es debido a que no se reconoce como confianza el certificado que emplea el controlador de dominio Samba4 por ser autofirmado.

Manos a la obra;

Lo primero que debemos hacer es comprobar si nuestro samba esta compilado con el soporte para TLS/SSL y ejecutamos el siguiente comando:

smbd -b | grep "ENABLE_GNUTLS"

Si en la salida sale ENABLE_GNUTLS, es que esta activo en samba el soporte TLS, proseguimos en obtener el certificado del samba por defecto se encuentra en /var/lib/samba/private/tls, el archivo que nos interesa es cert.pem, este lo transferimos o copiamos vía scp al servidor zimbra, al directorio /opt/zimbra, si nos da algún problema al copiarlo porque samba esta corriendo y no deja copiar el archivo, podemos abrirlo y copiar el texto, y este lo pegamos en un archivo que podemos crear con nano cert.pem en el servidor zimbra, pegamos el texto del certificado y guardamos el archivo.

Como obtener el certificado desde el propio servidor zimbra, como root, nos situamos en la carpeta donde esta instalado zimbra:

cd /opt/zimbra

ejecutamos openssl

openssl s_client -connect pdc_ad.dominio.cu:636 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > cert.pem

Procedemos entonces en el servidor de correo zimbra a importar el certificado al almacén de llaves. Para eso nos volvemos usuario

su - zimbra

Luego ejecutamos el siguiente comando para importar el certificado usando la propia herramienta de linea de comando que nos proporciona zimbra.

zmcertmgr addcacert cert.pem

Una alternativa es importando o agregando el certificado usando la herramienta keytool de java en la instalación de zimbra, si se solicita una contraseña escribimos «changeit» sin las comillas, para el aliasname recomiendo ponerle el nombre del dominio.

keytool -import -trustcacerts -file cert.pem -alias dominio.cu -keystore /opt/zimbra/common/etc/java/cacerts

Luego escribimos yes y el certificado quedará agregado satisfactoriamente. Con el mensaje:

Trust this certificate? [no]: yes
Certificate was added to keystore

Posteriormente reiniciamos los servicios de zimbra.

zmcontrol restart

Esperamos que termine y ya podemos volver a lanzar el wizard de configuración de la autenticación esta vez con el checkbox de ssl activo y ya no obtendremos más el error de la relación de confianza entre el zimbra y el AD Samba4 y la comunicación quedará segura.

Y hasta aquí las clases, hasta la próxima.

 

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Arian Molina Aguilera 3 artículos
Administrador de redes y servicios telemáticos avanzados.

4 comentarios

  1. Firefox 61.0 Firefox 61.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0

    Colega, hice todo por lo que dice tu manual y me da este error luego de poner la contraseña para importar el certificado
    error de herramienta de claves: java.util.IllegalFormatConversionException: d != java.lang.String


    • Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
      Firefox 61.0 Firefox 61.0 Ubuntu x64 Ubuntu x64
      Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0

      Puedes decirme en que momento de los comando te lanza el error, y que certificado estas usando, de donde lo obtuviste??


  2. Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
    Firefox 61.0 Firefox 61.0 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0

    Que hay Arian! Estoy probando la comunicación vía TLS entre zimbra y samba4, pero el comando:

    # smbd -b | grep “ENABLE_GNUTLS”

    Me da la salida en blanco, sin embargo, en mi /etc/samba/smb.conf tengo las líneas:

    tls enabled = yes
    tls keyfile = /etc/samba/tls/Key.pem
    tls certfile = /etc/samba/tls/Cert.pem
    tls cafile =
    tls verify peer = no_check

    y tengo instalado la versión 4.7.5 de samba4 que crees que falta??

    Saludos…


    • Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
      Firefox 61.0 Firefox 61.0 Ubuntu x64 Ubuntu x64
      Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0

      Eduardo si el comando te da salida en blanco, simplemente es que has compilado samba4 sin soporte ssl/tls, y aunque tengas esa parte en la configuración por defecto que es así el mismo no la utiliza pues no habilita dicho protocolo ldaps en el caso de las conexiones ldap, debes compilar samba4, como esta descrito en mi manual de implementación de samba4 como controlador de dominio, el cual si habilito y compilo son soporte ssl/tls. Salu2.

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*