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.
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
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??
Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
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
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.