OpenLDAP TLS Authentification

10

Saya mencoba menerapkan TLS sesuai https://help.ubuntu.com/lts/serverguide/openldap-server.html Ketika saya mencoba memodifikasi cn = config database dengan file ldif ini:

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/test-ldap-server_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/test-ldap-server_key.pem

Saya mendapatkan kesalahan berikut:

ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)

Apa yang saya lakukan salah?

EDIT: Ketika saya mencoba menggunakan auth sederhana saya mendapat kesalahan berikut:

ldapmodify -x -D cn=admin,dc=example,dc=com -W -f certinfo.ldif
Enter LDAP Password:
ldap_bind: Invalid DN syntax (34)
        additional info: invalid DN
Amar Prasovic
sumber
Periksa izin pada file sertifikat. Dan juga menghapus kata sandi jika sudah diatur.
zeridon
Terima kasih atas jawaban cepatnya. Izin diatur ke 644 kecuali untuk file .key yang ada di 600 Bagaimana cara saya memeriksa / menghapus kata sandi? Saya tidak ingat mengatur kata sandi untuk cn = config ..
Amar Prasovic
2
Maksud saya kata sandi pada sertifikat itu sendiri (bukan pada cn = config). Periksa: mnx.io/blog/removing-a-passphrase-from-an-ssl-key
zeridon
Tidak, bukan itu masalahnya. File kunci dibuat tanpa kata sandi.
Amar Prasovic
dapatkah Anda mencoba memuat ldiff dengan auth sederhana (tidak -Y EKSTERNAL)
zeridon

Jawaban:

17

Saya mengikuti panduan yang sama dan memiliki masalah yang sama. Ini akan berfungsi jika Anda melakukan langkah-langkah untuk "Kencangkan kepemilikan dan izin" yang tercantum setelah perintah ldapmodify yang menyinggung pertama - yaitu:

sudo adduser openldap ssl-cert
sudo chgrp ssl-cert /etc/ssl/private
sudo chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem
sudo chmod g+X /etc/ssl/private
sudo chmod g+r /etc/ssl/private/ldap01_slapd_key.pem

dan

sudo systemctl restart slapd.service
Hildigerr
sumber
1
Ini juga bekerja untuk saya!
sonicwave
2
Dalam kasus saya, saya harus menggunakan chgrp openldap. Bagaimanapun, ini masalah izin. +1
xonya
direktori pribadi juga harus dapat dieksekusi untuk dilintasi. sudo chgrp ssl-cert /etc/ssl/private && sudo chmod g+X /etc/ssl/private
Jeff Puckett
3

Ya saya tidak tahu apakah ini solusi atau hanya solusi, tetapi saya berhasil membuatnya bekerja.

Saya pertama kali menghentikan tamparan dengan:

service slapd stop

Lalu saya memulainya dalam mode debug:

slapd -h ldapi:/// -u openldap -g openldap -d 65 -F /etc/ldap/slapd.d/ -d 65

Penting untuk memulainya HANYA dengan ldapi: /// URL. Setelah dimulai saya menjalankan perintah ldapmodify dan atributnya diimpor.

Pada akhirnya saya menghentikan mode debug dan memulai slapd secara normal.

Amar Prasovic
sumber
2

Sebagai tindak lanjut dari jawaban A. Gutierrez , cara terbaik untuk memeriksa akses untuk setiap file adalah dengan menjalankannya sudo -u openldap cat <filename>. Saya melihat semua file beberapa kali dan mereka tampaknya memiliki izin diatur dengan benar. Ternyata menjadi masalah grup untuk openldap. Setelah saya akhirnya menemukan itu, sederhana sudo usermod -a -G ssl-cert openldapmemecahkannya untuk saya.

Rob Archibald
sumber
2

Terkadang masalahnya ada di profil apparmor untuk layanan slapd. Pastikan profil apparmor telah mengizinkan jalur sertifikat untuk daemon.

Secara visual cukup /etc/apparmor.d/usr.sbin.slapd. Secara default profil ini memungkinkan untuk membaca sertifikat di lokasi default.

Apparmor harus mencegah tindakan yang tidak ditentukan untuk dieksekusi daemon, meskipun izin unix yang tepat.

vskubriev
sumber
Jika Anda menggunakan letsencrypt, ini solusinya. Tambahkan baris berikut ke /etc/apparmor.d/usr.sbin.slapd: / etc / letsencrypt / r, / etc / letsencrypt / ** r, dan muat ulang profil apparmor.
Bernhard
1

Seperti yang saya laporkan dalam bug ini di Ubuntu Launchpad , masalah ini juga bisa disebabkan oleh apparmor. Biasanya ini akan ditampilkan di syslog sebagai penolakan akses.

Perbaikannya adalah menyisipkan baris berikut di /etc/apparmor.d/usr.sbin.slapd:

/etc/letsencrypt/** r,

dan kemudian menyegarkan profil:

# apparmor_parser -vr usr.sbin.slapd
# service apparmor restart
Tarek Loubani
sumber
0

Saya punya masalah ini juga. Masalahnya adalah pengguna yang menjalankan slapd tidak memiliki akses ke file sertifikat. Periksa bahwa pemilik file itu adalah pengguna openldap.

A. Gutierrez
sumber
0

Bagi saya masalahnya adalah urutan catatan yang salah - inilah yang berfungsi:

dn: cn=config
changetype: modify
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cm_ca_cert.pem
-
# This never worked for me, no idea why
#add: olcTLSCipherSuite
#olcTLSCipherSuite: TLSv1+RSA:!NULL
#-
replace: olcTLSVerifyClient
olcTLSVerifyClient: never
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/cm_server.pem
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/cm_server.key
Arie Skliarouk
sumber
0

Sayangnya ini tampaknya menjadi kesalahan "default" yang Anda dapatkan untuk apa saja. @wulfsdad's anwser biasanya memperbaikinya.

Satu hal lain yang saya selalu lupa adalah bahwa secara default di ubuntu slapd ingin kunci dalam format openssl. Saya mengatur tetapi PCKS # 8 kunci ke dalamnya dan berharap itu hanya berfungsi (yang seharusnya adil). Jika Anda mencoba semua jawaban di atas juga pastikan kunci memiliki format yang tepat. Ketika googling tentang kesalahan Anda biasanya membaca tentang izin yang salah dan menggosok kepala Anda mengapa apache bekerja dengan slapd sangat tidak suka.

pengguna3240383
sumber