GNU/Linux >> Belajar Linux >  >> Linux

Masalah Dengan Atribut Sertifikat Pengguna Ldap?

Saya mencoba menggunakan atribut 'userCertificate' untuk menyimpan file 'der'.
Dengan senang hati saya dapat menambahkan sertifikat saya menggunakan ldif:

dn:cn=bob,ou=users,dc=home
changetype:memodifikasi
tambahkan:userCertificate;binary
userCertificate;binary:

Saya melihat sertifikat saya dalam pengkodean base64 ketika saya melakukan pencarian ldap dan hidup tampak baik. Tetapi ketika saya mencoba menggunakan ldapcompare:

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

Saya mendapatkan kesalahan:

Bandingkan Hasil:Sintaks tidak valid (21)
Info tambahan:tidak dapat menormalkan nilai untuk pencocokan
UNDEFINED

Saya mendapatkan kesalahan yang sama jika saya mencoba membandingkan menggunakan pengkodean base64

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

Ada ide?

Jawaban yang Diterima:

Saya baru saja mendapatkan kesalahan ini:ldap_modify:Undefined atribut type (17) info tambahan:sertifikat pengguna:memerlukan;transfer biner.

Pesan kesalahan ini cukup jelas mengacu pada apa yang diamanatkan dalam RFC 4523, bagian 2.1. Anda hanya harus selalu menambahkan ;binary ke nama atribut di semua operasi LDAP yang memengaruhi atribut userCertificate .

ldap_msgfree ldap_err2string Bandingkan Hasil:Sintaks tidak valid (21) Info tambahan:tidak dapat menormalkan nilai untuk pencocokan UNDEFINED

Saat menggunakan operasi perbandingan, Anda harus melihat EQUALITY which mana aturan pencocokan tersedia untuk atribut pernyataan.

Dalam subskema sertifikat pengguna dideklarasikan dengan EQUALITY certificateExactMatch berdasarkan nama penerbit dan serial (lihat RFC 4523 bagian 2.5) yang berarti tidak ada kecocokan string oktet murni yang tersedia untuk atribut tersebut.

Jadi, Anda perlu mengekstrak nomor seri desimal dan DN penerbit (representasi string LDAP) dari sertifikat:

$ 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

Ubah serial hex menjadi desimal yaitu 1005070 dalam contoh ini dan aktifkan ldapcompare seperti ini:

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

Catatan tambahan:

  • Perhatikan bahwa DN adalah binatang kompleks dengan pelepasan karakter
    khusus yang memerlukan perlakuan khusus pada baris perintah shell.
    Oleh karena itu saya akan menggunakan bahasa skrip untuk tugas ini untuk menghindari
    beberapa masalah.
  • Sebaliknya untuk memodifikasi operasi dan pengambilan atribut, Anda tidak memerlukan ;binary jenis transfer untuk membandingkan operasi. Tetapi dengan OpenLDAP tidak ada salahnya juga. Tidak yakin tentang implementasi server LDAP lainnya.
Terkait:Masalah Sinkronisasi iPhone / iPod / iPad?
Linux
  1. Pelacakan kernel dengan trace-cmd

  2. Masalah Dengan Cryptsetup Selama Pembaruan?

  3. Linux – tidak dapat menghapus file yang dimiliki dengan izin 777

  1. Menambal Biner Dengan Dd?

  2. Masalah dengan penghentian SCP selama penyalinan file melalui VPN

  3. Masalah dengan variabel bash berkembang dengan tanda kutip tunggal

  1. Masalah Dengan Eclipse Dan Android SDK?

  2. Masalah Dengan Ubuntu Via Crouton Di Chromebook?

  3. Masalah Dengan Kompilasi Imagemagick Dengan Heic?