GNU/Linux >> Tutoriels Linux >  >> Linux

Problèmes avec l'attribut LDAP Usercertificate ?

J'essaie d'utiliser l'attribut "userCertificate" pour contenir un fichier "der".
Je peux facilement ajouter mon certificat en utilisant le ldif :

dn :cn=bob,ou=users,dc=home
changetype : modify
add :userCertificate;binary
userCertificate;binary :

Je vois mon certificat en encodage base64 lorsque je fais une recherche ldap et la vie semble belle. Mais quand j'essaie d'utiliser ldapcompare :

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

J'obtiens l'erreur :

Résultat de la comparaison :syntaxe non valide (21)
Informations supplémentaires :impossible de normaliser la valeur pour la correspondance
UNDEFINED

J'obtiens la même erreur si j'essaie de comparer en utilisant l'encodage base64

ldapcompare -D"cn=admin,dc=home" -W "cn=bob,ou=users,dc=home" "userCertificate ::base64encodedStringOfStuff"

Des idées ?

Réponse acceptée :

Je viens d'obtenir cette erreur :ldap_modify :type d'attribut non défini (17) informations supplémentaires :usercertificate :requiert ;transfert binaire.

Ce message d'erreur fait clairement référence à ce qui est mandaté dans RFC 4523, section 2.1. Vous devez simplement toujours ajouter ;binary au nom de l'attribut dans toutes les opérations LDAP affectant l'attribut userCertificate .

ldap_msgfree ldap_err2string Résultat de la comparaison :syntaxe non valide (21) Informations supplémentaires :impossible de normaliser la valeur pour la correspondance UNDEFINED

Lorsque vous utilisez l'opération de comparaison, vous devez regarder quelle ÉGALITÉ la règle de correspondance est disponible pour l'attribut d'assertion.

Dans le sous-schéma userCertificate est déclaré avec EQUALITY certificateExactMatch basé sur le nom de l'émetteur et le numéro de série (voir RFC 4523 section 2.5), ce qui signifie qu'il n'y a pas de correspondance de chaîne d'octets pure disponible pour cet attribut.

Vous devez donc extraire le numéro de série décimal et le DN de l'émetteur (représentation sous forme de chaîne LDAP) du certificat :

$ 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

Convertir le numéro de série hexadécimal en décimal qui est 1005070 dans cet exemple et appelez ldapcompare comme ceci :

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

Remarques supplémentaires :

  • Sachez que les DN sont des bêtes complexes avec l'échappement de caractères spéciaux
    qui nécessitent un traitement spécial sur la ligne de commande du shell.
    Par conséquent, j'utiliserais un langage de script pour cette tâche afin d'éviter
    certains des problèmes.
  • Contrairement aux opérations de modification et de récupération d'attributs, vous n'avez pas besoin du ;binary type de transfert pour l'opération de comparaison. Mais avec OpenLDAP, cela ne fera pas de mal non plus. Pas sûr des autres implémentations de serveur LDAP.
En relation :Problèmes de synchronisation iPhone/iPod/iPad ?
Linux
  1. Dépannage des problèmes matériels sous Linux

  2. Patcher un binaire avec Dd ?

  3. Problèmes avec Cryptsetup lors de la mise à jour ?

  4. Problèmes avec Ubuntu via Crouton sur Chromebook ?

  5. Des problèmes avec la compilation d'Imagemagick avec Heic ?

Configurer OpenLDAP avec SSL sur CentOS 7 / RHEL 7

Serveur LDAP

Comment rechercher LDAP à l'aide de ldapsearch (avec exemples)

Des problèmes avec le rendu des polices TTF sous Libreoffice ?

Problèmes de rendu Chrome/ium avec les graphiques Intel ?

Comment installer le serveur d'annuaire LDAP 389 sur Linux avec des étapes détaillées