«ldif_read_file: checksum error» en OpenLDAP

Calcular checksum CRC32 en ficheros de configuración de OpenLDAP.

«ldif_read_file: checksum error» es un error que se genera en OpenLDAP al realizar modificaciones manuales en cualquiera de los archivos LDIF ubicados en /etc/ldap/slapd.d/

Este error se manifiesta a la hora de ejecutar slaptest -u, reiniciar el servicio de LDAP o utilizando slapcat. En mi caso se trataba de una primera configuración en una máquina Red Hat Linux Enterprise 6.6 (RHEL 6).

Un checksum, suma de chequeo o suma de verificación es una función hash que tiene como fin comprobar la integridad de los ficheros. De esta manera se busca evitar ficheros modificados accidentalmente o corruptos, evitando que haya discrepancias con el original. En internet es común encontrar el hash MD5 cuando descargamos algún tipo de software, de manera que podemos comprobar que el archivo descargado es tal y como se pretende ofrecer.


Error de checksum en ficheros OpenLDAP

Como he comentado, cualquier cambio que se realice de manera manual en los ficheros de configuración .ldif ubicados en /etc/ldap/slapd.d/ harán mostrar este error en forma de advertencia. Estos llevan arriba una cabecera que dice «# AUTO-GENERATED FILE – DO NOT EDIT!! Use ldapmodify.» que hemos ignorado. En este caso no es MD5 el algoritmo usado para la comprobación, si no CRC32 (Cyclic Redundancy Check 32).

Lo recomendable es utilizar la herramienta ldapmodify, pero quizás resulte más cómodo realizar todas los ajustes directamente sobre los ficheros de configuración y recalcular la suma de comprobación.

Si por ejemplo editas el fichero /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif y cambias cualquier parámetro, el contenido y la suma de comprobación no coincidirá. No se trata de ningún error que impida el funcionamiento normal de OpenLDAP, pero puede resultar molesto cuando usamos consultas con slapcat, por ejemplo.

En mi caso, estos eran los dos archivos que daban ldif_read_file: checksum error:

Solucionarlo es tan fácil como volver a calcular los sumas de comprobación / checksums con la herramienta checkcrc.

ldif read file checksum error en OpenLDAP.

Verificando los archivos de configuración para slapd.

Recalcular las sumas de comprobación

Primero copiamos el fichero que da error sus sumas de comprobación al directorio temporal cp /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif /tmp/ Recuerda que debes de escapar los caracteres extraños como símbolos de igual y corchetes.

Seguidamente realizamos una copia del archivo sin las dos primeras líneas del fichero, donde se incluye la advertencia y el checksum antiguo. Si no eliminamos estas líneas se generará una suma de comprobación incorrecta. Lo hacemos utilizando el siguiente comando:
tail -n +3 /tmp/olcDatabase\=\{1\}monitor.ldif > /tmp/nuevomonitor.ldif

Descargamos la herramienta Check CRC desde http://freecode.com/projects/checkcrc/ Esto debemos hacerlo desde un navegador web, no siendo posible hacerlo con wget, por lo que luego tendremos que copiarlo al servidor con scp /home/nano/Descargas/check-4.3-src.tgz root@ipremota:

De nuevo en nuestro servidor, descomprimimos el archivo con la ejecución de tar -xvfz check-4.3-src.tgz

Instalamos la librería zlib en caso de no estar instalada en nuestro sistema. En nuestro caso ya se encuentra instalada la versión zlib-1.2.3-29.el6.x86_64 en nuestro sistema RHEL 6.6. Es posible que en otras distribuciones el paquete a instalar sea zlib-dev.

Compilamos la herramienta Check CRC ubicándonos en su directorio y ejecutando el comando gcc (GNU Compiler Collection)

Ahora, calculamos la suma de comprobación con el fichero de configuración que no contenía las dos primeras líneas.

El resultado de la verificación por redundancia cíclica es 349dabd6. Así pues, editamos el fichero original para el cual hemos calculado el checksum, en este caso /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif y reemplazamos el código CRC32.

Fichero de configuración ldif de OpenLDAP

Podemos comprobar que el fichero monitor.ldif ya no aparece en la advertencia, mientras que el bdb.ldif continúa debido a que no se ha recalculado su suma.
Calcular el checksum CRC32 de un archivo en Red Hat Enterprise Linux.

Referencias:
How to fix OpenLDAP checksum error on config files

Compartir es agradecer. Si te ha gustado... ¡compartélo!
Comparte con tus amigos










Enviar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.