GNU/Linux >> Tutoriales Linux >  >> Linux

¿Problemas con el atributo de certificado de usuario Ldap?

Estoy tratando de usar el atributo 'userCertificate' para contener un archivo 'der'.
Puedo agregar felizmente mi certificado usando ldif:

dn:cn=bob,ou=users,dc=home
tipo de cambio:modificar
agregar:certificado de usuario;binario
certificado de usuario;binario:

Veo mi certificado en codificación base64 cuando hago una búsqueda ldap y la vida parece buena. Pero cuando trato de usar ldapcompare:

ldapcompare -D”cn=admin,dc=home” -W “cn=bob,ou=users,dc=home” “userCertificate;binary:

Me sale el error:

Resultado de la comparación:sintaxis no válida (21)
Información adicional:no se puede normalizar el valor para la coincidencia
SIN DEFINIR

Recibo el mismo error si trato de comparar usando la codificación base64

ldapcompare -D”cn=admin,dc=inicio” -W “cn=bob,ou=usuarios,dc=inicio” “userCertificate::base64encodedStringOfStuff”

¿Alguna idea?

Respuesta aceptada:

Acabo de recibir este error:ldap_modify:tipo de atributo no definido (17) información adicional:certificado de usuario:requiere; transferencia binaria.

Este mensaje de error se refiere bastante claramente a lo que se exige en RFC 4523, sección 2.1. Simplemente siempre tienes que agregar ;binary al nombre del atributo en todas las operaciones LDAP que afecten al atributo userCertificate .

ldap_msgfree ldap_err2string Resultado de la comparación:sintaxis no válida (21) Información adicional:no se puede normalizar el valor para la coincidencia UNDEFINED

Al usar la operación de comparación, debe observar qué IGUALDAD la regla de coincidencia está disponible para el atributo de aserción.

En subesquema userCertificate se declara con EQUALITY certificateExactMatch basado en el nombre del emisor y el número de serie (consulte RFC 4523, sección 2.5), lo que significa que no hay una coincidencia de cadena de octetos pura disponible para ese atributo.

Por lo tanto, debe extraer el número de serie decimal y el DN del emisor (representación de cadena LDAP) del certificado:

$ openssl x509 -noout -nameopt rfc2253 -serial -issuer -inform der -in ~/certs/[email protected] 
serial=0F560E
issuer=CN=StartCom Class 1 Primary Intermediate Client CA,OU=Secure Digital Certificate Signing,O=StartCom Ltd.,C=IL

Convierta la serie hexadecimal a decimal, que es 1005070 en este ejemplo e invoque ldapcompare así:

ldapcompare "cn=Michael Strö[email protected],dc=stroeder,dc=de" 'userCertificate;binary:{ serialNumber 1005070, issuer "cn=StartCom Class 1 Primary Intermediate Client CA,ou=Secure Digital Certificate Signing,o=StartCom Ltd.,c=IL"}'
TRUE

Notas adicionales:

  • Tenga en cuenta que los DN son bestias complejas con escape de caracteres especiales
    que necesitan un tratamiento especial en la línea de comandos de shell.
    Por lo tanto, usaría un lenguaje de secuencias de comandos para evitar esta tarea
    algunos de los problemas.
  • A diferencia de las operaciones de modificación y la recuperación de atributos, no necesita el ;binary tipo de transferencia para la operación de comparación. Pero con OpenLDAP tampoco le dolerá. No estoy seguro acerca de otras implementaciones de servidor LDAP.
Relacionado:¿Problemas de sincronización de iPhone/iPod/iPad?
Linux
  1. Solución de problemas de hardware en Linux

  2. ¿Problemas con Eclipse y Android SDK?

  3. Linux:no se puede eliminar el archivo propio con permisos 777

  4. Problemas con el estancamiento de SCP durante la copia de archivos a través de VPN

  5. Problemas con la variable bash que se expande con comillas simples

Configurar OpenLDAP con SSL en CentOS 7 / RHEL 7

Servidor LDAP

Cómo buscar LDAP usando ldapsearch (con ejemplos)

¿Problemas con la representación de fuentes TTF en LibreOffice?

¿Problemas de renderizado de Chrome/ium con gráficos Intel?

Cómo instalar el servidor de directorio LDAP 389 en Linux con pasos detallados