El daemon Slapd no puede iniciarse: TLS init def ctx falló: -1

2

Ayer tuve que reiniciar mi servidor Mac OS X Lion y después de reiniciar, observé que no tengo ninguna conexión a mi LDAPv3 en el host local, así como ningún usuario disponible en la aplicación del servidor.

A continuación, la aplicación Servidor ha mostrado tres certificados desactualizados. Sus nombres que comienzan con "APNS".

No estoy seguro de si el problema está relacionado específicamente con esos certificados, pero desafortunadamente "slapd" se refiere a problemas con los certificados principales para mi dominio interno.

A continuación se muestra el registro de slapd en sí:

Oct 27 17:49:57 apple slapd[723]: @(#) $OpenLDAP: slapd 2.4.23 (Jun 24 2012 23:35:56) $
    [email protected]:/private/var/tmp/OpenLDAP/OpenLDAP-186.5~1/servers/slapd

Oct 27 17:49:57 apple slapd[723]: daemon: SLAP_SOCK_INIT: dtblsize=8192
Oct 27 17:49:57 apple slapd[723]: main: TLS init def ctx failed: -1 
Oct 27 17:49:57 apple slapd[723]: slapd stopped.

El registro del sistema obviamente muestra:

Oct 27 17:53:19 apple com.apple.launchd[1] (org.openldap.slapd[879]): Exited with code: 1  
Oct 27 17:53:19 apple com.apple.launchd[1] (org.openldap.slapd): Throttling respawn: Will start in 10 seconds

Al intentar iniciar slapd desde la línea de comandos (usando: /usr/libexec/slapd -d -1 ), recibo el siguiente mensaje antes de fallar:

TLS: attempting to read
 '/etc/certificates/domain.com.456DACFFC771F8EB2F5A8E0EBB269969B8164097.key.pem'.
execv failed 
TLS: could not use key file
 '/etc/certificates/domain.com.456DACFFC771F8EB2F5A8E0EBB269969B8164097.key.pem'.
LS: error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long
/SourceCache/OpenSSL098/OpenSSL098-49/src/crypto/asn1/asn1_lib.c:150
main: TLS init def ctx failed: -1 slapd destroy: freeing system resources. slapd stopped.

Si elimino las opciones de configuración TLS de "/etc/openldap/slapd_macosxserver.conf", puedo iniciar el daemon (usando: /usr/libexec/slapd -d -1 -f slapd_macosxserver.conf . Todos mis usuarios están de vuelta, puedo iniciar sesión a través de Workgroup Manager o Aplicación de servidor.

Mientras tanto, el Administrador del servidor en la entrada de Open Directory muestra que:

  1. El servidor LDAP se está ejecutando
  2. El servidor de contraseñas está: detenido
  3. Kerberos es: en ejecución

He intentado un par de cosas, pero aún no tengo idea de cómo solucionar el problema.

    
pregunta Dexterite 27.10.2013 - 18:17

2 respuestas

1

Recomiendo crear otro certificado autofirmado en Server.app que pueda usar para asegurar los servicios (si los otros fueron vencidos / eliminados). Al crear el certificado utilizando Server.app, estará automáticamente disponible para otros servicios (como Open Directory).

Una vez que haya creado un nuevo certificado autofirmado, siga los pasos 6 a 12 de este artículo (que describen cómo puede configurarse su certificado SSL para su uso con Open Directory). Ejecutando el Open Directory - > Configuración - > LDAP - > La configuración SSL a través de Server Admin escribirá las rutas de certificado correctas en el archivo de configuración slapd .

Una vez que haya corregido los problemas del certificado, Open Directory ( slapd ) debería iniciarse normalmente (sin que tenga que iniciarlo manualmente). Si Password Server sigue sin mostrarse ejecutándose después de eso, puede intentar reiniciar (o verificar si está generando registros de fallos u otros errores en la Consola).

Editar

Después de modificar la configuración del certificado para su uso con LDAP, es probable que valga la pena verificar que la máquina haya proporcionado rutas de certificado actualizadas a slapd en el archivo slapd_macosxserver.conf . Es decir, la cadena única de números y caracteres en las rutas clave / cert debería haber cambiado.

Para confirmar que slapd puede acceder a la clave privada correspondiente para el certificado con el que está asegurando los servicios LDAP, puede verificar el archivo en /etc/openldap/slapd_macosxserver.conf ... Busque una línea que mencione certadmin ... Esa línea especifica el comando que slapd está utilizando para recuperar la clave privada del llavero. Es posible ejecutar ese comando (copiar y pegar) en la Terminal para ver si se puede recuperar la frase de contraseña de la clave privada:

/usr/sbin/certadmin --get-private-key-passphrase /etc/certificates/domain.com.456DACFFC771F8EB2F5A8E0EBB269969B8164097.key.pem

Una vez que haya recuperado la frase de contraseña, vea si puede ver la clave privada usando esa frase de contraseña:

sudo openssl rsa -in /etc/certificates/domain.com.456DACFFC771F8EB2F5A8E0EBB269969B8164097.key.pem -text -noout

Cuando se le solicite la frase de paso, copie y pegue el valor que obtuvo en el paso anterior. Debería ver la salida de datos de clave privada en la pantalla. Esto confirmaría que:

1.) Su frase de contraseña privada se puede recuperar del llavero

2.) La frase de contraseña en el llavero se puede usar para descifrar la clave

Si no puede obtener la contraseña y desbloquear la clave, es posible que slapd tampoco pueda hacerlo. Creo que el software está utilizando un elemento de llavero en el llavero del sistema llamado "Administración de certificados del servidor Mac OS X" con un tipo de "contraseña de aplicación". La "Cuenta" para ese elemento de llavero debe configurarse con la misma cadena única de caracteres y números ( 456DACFFC771F8EB2F5A8E0EBB269969B8164097 en este ejemplo) que ve en las rutas cert / key en /etc/certificates . Si no ve una de estas contraseñas de aplicación correspondientes en el llavero del sistema, puede ser su problema.

    
respondido por el Eddie Kelley 29.10.2013 - 08:30
1

Lo siguiente se probó en las versiones snow-leopard 10.6 y lion 10.7 del sistema operativo cuando el servidor LDAP de OpenDirectory no se inicia y el servidor de contraseñas aún se está ejecutando.

Si observa la cola del archivo sudo tail /etc/openldap/slapd.d/cn=config.ldif , verá un conjunto de entradas de certificados TLS similares al bloque a continuación:

olcTLSCertificateFile: /etc/certificates/[myservername].ECA88C7518AEDE947AAC94D9A259D1B2E5621169.cert.pem

olcTLSCACertificateFile: /etc/certificates/[myservername].ECA88C7518AEDE947AAC94D9A259D1B2E5621169.chain.pem

olcTLSCertificateKeyFile: /etc/certificates/[myservername].ECA88C7518AEDE947AAC94D9A259D1B2E5621169.key.pem

olcTLSCertificatePassphraseTool: /usr/sbin/certadmin --get-private-key-passphrase /etc/certificates/[myservername].ECA88C7518AEDE947AAC94D9A259D1B2E5621169.key.pem

entryCSN: 20120628190714.643255Z#000000#001#000000

Si compara estas entradas con los valores que se muestran en / etc / certificados, es muy probable que encuentre que el número mágico es diferente para su certificado con el valor que se muestra en el directorio / etc / certificate para sus certificados.

Si ejecuta el comando

sudo /usr/libexec/slapd -d 1

verá hacia el final de la traza una línea que se aproxima

TLS: could not load verify locations (file:'/etc/certificates…

Para superar este problema, elimine las últimas cinco líneas del archivo /etc/openldap/slapd.d/cn=config.ldif manualmente usando su editor favorito y sudo .

Luego, para reiniciar ldap emita los siguientes comandos

sudo /usr/bin/db_recover -h /var/db/openldap/openldap-data
sudo launchctl load /System/Library/LaunchDaemons/org.openldap.slapd.plist

Todo debería ser arreglado.

    
respondido por el sweetfa 01.03.2014 - 09:11

Lea otras preguntas en las etiquetas