RHEL sebenarnya tidak menyediakan apa pun yang dapat digunakan sebagai 'direktori sertifikat' untuk tujuan kepercayaan CA. Untuk OpenSSL, direktori sertifikat - 'CApath' - adalah direktori yang berisi file sertifikat individual (dalam format PEM atau format 'sertifikat tepercaya' OpenSSL yang diperluas), dengan nama dalam format tertentu berdasarkan hash dari nama subjek sertifikat. Biasanya ini dicapai dengan meletakkan file dengan nama yang dapat dibaca manusia dan .pem
ekstensi di direktori dan berjalan c_rehash
di atasnya (lihatman c_rehash
). Untuk GnuTLS sejak 3.3.6 (sebelum itu GnuTLS tidak memiliki dukungan direktori), itu hanya direktori dengan file PEM di dalamnya; GnuTLS akan mencoba dan memuat setiap file dalam direktori dan berhasil pada PEM-ish apa pun (tidak dapat menangani format 'sertifikat tepercaya' OpenSSL). Saya tidak benar-benar yakin apakah NSS benar-benar dapat menggunakan direktori yang penuh dengan file sertifikat individu sebagai trust root, tetapi dokumentasi OpenLDAP sepertinya menyarankan itu bisa (tetapi jika direktori tersebut juga berisi database NSS, ia akan memberikan prioritas itu). Apapun, RHEL tidak memiliki apa pun seperti direktori yang penuh dengan file sertifikat CA individu.
Debian dan turunannya menyediakan /etc/ssl/certs
dalam format ini; /etc/ssl/certs
adalah lokasi toko kepercayaan kanonik di Debian, dan IMO apa pun yang menyediakannya pada dasarnya harus menjabarkannya seperti milik Debian, karena Debian memiliki direktori yang ditata kurang lebih dengan cara yang sama sejak 1999. RHEL memiliki /etc/ssl/certs
direktori, tetapi masih dalam tidak dalam format ini - tidak mengandung file sertifikat individual sama sekali. Anda tidak dapat menggunakannya sebagai CApath. Jujur, di RHEL (dan Fedora, dan turunannya) direktori itu pada dasarnya adalah jebakan. Jangan gunakan itu. (Lihat https://bugzilla.redhat.com/show_bug.cgi?id=572725 dan https://bugzilla.redhat.com/show_bug.cgi?id=1053882untuk beberapa latar belakang mengapa itu ada di tempat pertama, dan bagaimana saya mencoba untuk memperbaikinya). Jadi saya pikir Anda benar tentang apa yang terjadi, tetapi salah tentang alasannya. OpenLDAP tidak melakukan kesalahan, dan itu tidak gagal karena "ca-bundle.trust.crt ... adalah basis data kunci / sertifikat Mozilla NSS" (yang disebut cert8/9.db
dan key3/4.db
, dan yang di seluruh sistem di RHEL tinggal /etc/pki/nssdb
) , itu hanya gagal karena /etc/ssl/certs
tidak dapat digunakan sebagai 'direktori sertifikat' sama sekali.
RHEL tidak menyediakan apa pun yang dapat digunakan sebagai toko kepercayaan gaya CApath di tempat lain, baik. Penyimpanan trust sistem RHEL disediakan sebagai file bundel PEM tunggal ('CAfile' dalam istilah OpenSSL), yang dapat ditemukan di /etc/pki/tls/certs/ca-bundle.crt
dan /etc/pki/tls/cert.pem
. Ini juga dapat ditemukan pada /etc/ssl/certs/ca-bundle.crt
saat /etc/ssl/certs
sebenarnya hanya symlink ke /etc/pki/tls/certs
, tetapi lokasi itu tidak kanonik dan benar-benar tidak boleh digunakan oleh apa pun. RHEL juga menyediakan bundel dalam format 'sertifikat tepercaya' OpenSSL sebagai /etc/pki/tls/certs/ca-bundle.trust.crt
.
Hal yang benar untuk dilakukan, seperti yang Anda ketahui, adalah menggunakan file bundel yang disediakan sistem. Jawaban Anda akan berhasil, tetapi untuk alasan yang disebutkan di atas, saya akan sangat menyarankan TLS_CACERT=/etc/pki/tls/certs/ca-bundle.crt
atau TLS_CACERT=/etc/pki/tls/cert.pem
lebih TLS_CACERT=/etc/ssl/certs/ca-bundle.crt
.
(Tidak ada yang baru dalam hal ini, btw, tetapi kebingungan pada jalinan luas. RH dan turunannya tidak pernah memberikan direktori-penuh-sertifikat, tidak pernah. Mereka telah menyediakan file bundel sejak tahun 2000. Itu adalah pindah dari / usr / share / ssl ke / etc / pki / tls pada tahun 2005. Debian memiliki keduanya /etc/ssl/certs
sebagai direktori gaya CApath dan /etc/ssl/certs/ca-certificates.crt
sebagai file bundel kurang lebih sejak zaman batu.)
/etc/ssl/certs/
berisi/etc/ssl/certs/ca-bundle.trust.crt
sebagai bagian darica-certificates-2010.63-3.el6_1.5.noarch
, yang merupakan basis data kunci / sertifikat Mozilla NSS. Dimasukkannya file ini di dalamTLS_CACERTDIR
menyebabkan semua file lainnya diabaikan.Namun,
openldap-2.4.23-26.el6_3.2.i686
sepertinya tidak menangani ini dengan benar.Penggunaan Jawaban Singkat
LDAPTLS_CACERT=/etc/ssl/certs/ca-bundle.crt
(file konfigurasi
TLS_CACERT=/etc/ssl/certs/ca-bundle.crt
)File ini juga disertakan oleh
ca-certificates-2010.63-3.el6_1.5.noarch
.sumber
Orang lain mengalami hal ini; inilah yang bekerja untuk saya di centos 6 openldap dan sssd:
catatan: a. Beberapa "orang pintar" memutuskan untuk membuat sssd memerlukan TLS / SSL; perubahan perilaku dari centos5; ini bagus untuk sistem eksternal; tetapi ketika Anda memiliki 300 + node pada alat internal dengan jaringan internal yang tidak dapat dijangkau ke kluster mesin; ini adalah fitur keamanan yang sangat tidak berguna.
b. Lebih lanjut, sertifikat yang dinyanyikan sendiri tampaknya tidak berfungsi lagi; akan terus berusaha
c. Hindari NSLCD di semua biaya; diganggu dengan masalah non-stop ketika saya mengatur bendera warisan dan digunakan sebagai ganti sssd (netgroups; deadlocking syslog, dll.).
Untuk bangkit dan berjalan menggunakan sssd;
sssd.conf
slapd.conf
ldap.conf
sumber
sssd
misalnya.Ini adalah masalah yang sangat umum, jangan khawatir saya punya jawaban untuk Anda.
Pertama RHEL Klon telah memiliki dua
ldap.conf
file,/etc/ldap.conf
atau di RHEL6 yang sudah ditinggalkan tetapi Anda dapat menggunakan/etc/nslcd.conf
untuk otentikasi sekarang/etc/openldap/ldap.conf
hanya untuk permintaan , sehinggaldapsearch
,ldapmodify
,ldapremove
, itu benar-benar profil Anda sehingga Anda tidak perlu memiliki string panjang jahat setiap kali Anda ingin untuk menjalankan perintah ldap.Sekarang dengan itu, Anda memiliki dua parameter,
tls_cacertfile
- secara eksplisit mendefinisikan sertifikat dan Anda harus baik untuk pergitls_cacertdir
- masukkan ca cert ke dalam direktori tetapi itu tidak akan berfungsi, karena itu perlu di -hash ...gunakan
openssl x509 -hash -noout -in $file , ln -s $file $file.0
, maka sertifikat CA Anda akan berfungsi.Perhatikan juga jika file konfigurasi dalam CAPS, Anda bekerja di /etc/openldap/ldap.conf, mereka adalah file yang sangat berbeda.
Semoga ini jelas.
sumber
Menurut halaman manual setiap orang yang saya lihat (tapi saya bukan pengguna CentOS) tidak ada yang namanya
LDAPTLS_CACERTDIR
. Variabel yang benar untuk ditetapkan adalahTLS_CACERTDIR
. Anda harus mengaturnya secara permanen di/etc/openldap/ldap.conf
atau di mana pun CentOS menyimpan file konfigurasi pustaka LDAP. Juga, Anda mungkin perlu mengkonfigurasi pam-ldap sendiri untuk mencari sertifikat CA. Dalam CentOS ini/etc/pam_ldap.conf
, saya pikir, dan variabel yang akan ditetapkan adalahtls_cacertdir
.sumber
Environmental variables may also be used to augment the file based defaults. The name of the variable is the option name with an added prefix of LDAP. For example, to define BASE via the environment, set the variable LDAPBASE to the desired value.
LDAPTLS_CACERTDIR
dan tidak menemukan, jadi saya berasumsi Anda mencampuradukkan variabel Anda. Maaf.