Bagaimana cara membuat ldapsearch bekerja pada SLES lebih dari tls menggunakan sertifikat?

12

Kita perlu menghubungkan skrip php kami ke LDAP melalui tls menggunakan sertifikat. Koneksi LDAP berfungsi dengan baik tanpa tls. Lebih detail di sini /programming/15260252/how-to-use-multiple-tls-certificates-for-ldap-from-php-zend

Kami berhasil terhubung melalui tls dari Windows menggunakan Softerra LDAP Browser. Ia meminta kami memasang sertifikat dan apakah kami mempercayainya.

Hasil akhir saya adalah untuk dapat mengautentikasi dengan LDAP menggunakan TLS dari php. Saya telah diberi sertifikat tipe .cer. Itu berasal dari mesin Windows Exchange. Dari apa yang saya lihat SLES mendukung sertifikat .pem. Jadi pertanyaan saya adalah ...

T1: Apakah saya perlu mengonversi dari .cer ke .pem terlebih dahulu sebelum saya dapat menginstal sertifikat pada klien (yang merupakan server SLES) dan akhirnya Q2: apa cara terbaik untuk menginstal sertifikat ini di server sehingga aplikasi php saya dapat mengaksesnya dan melakukan tugasnya . Perhatikan bahwa pada server SLES kita perlu terhubung ke berbagai server LDAP.

Saat ini jika kita berlari

ldapsearch -H ldaps://localhost:9215 -W

kita mendapatkan

Enter LDAP Password: 
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed (unable to get local issuer certificate)

Saya menemukan banyak info bagus di sini http://www.php.net/manual/de/function.ldap-connect.php#36156 dan terutama kalimat ini penting di mata sayaOnce you've gotten the ldapsearch tool working correctly PHP should work also.


  • SUSE Linux Enterprise Server 11 (x86_64)
  • ldapsearch: @ (#) $ OpenLDAP: ldapsearch 2.4.26 (26 Sep 2012 13:14:42) $ abuild @ baur: /usr/src/packages/BUILD/openldap-2.4.26/clients/tools (perpustakaan LDAP: OpenLDAP 20426)
Radek
sumber
Cara alternatif untuk debug adalah mengabaikan bagian LDAP dan hanya melihat SSL: Anda dapat menjalankan "openssl s_client -connect localhost: 9215" untuk memuntahkan sertifikat yang digunakan server dan hasil validasi.
Kowh
BAIK. Saya akan meneruskannya ke pengembang. Saya secara pribadi masih tidak mengerti bagaimana saya menginstal sertifikat dan itu terhubung ke server ketika saya ingin mengaksesnya.
Radek

Jawaban:

25

Itu berarti sertifikat pada server telah kedaluwarsa atau tidak valid.

Adapun solusinya, gunakan LDAPTLS_REQCERTvariabel untuk mengabaikan sertifikat, misalnya:

LDAPTLS_REQCERT=never ldapsearch -D "cn=drupal-test,ou=Services,dc=example,dc=com" -w my_pass -h ldap.example.com -b "ou=People,dc=example,dc=com" -s sub -x -ZZ "(uid=admin)"

Kalau tidak, Anda dapat mengimpor sertifikat dan menandainya sebagai tepercaya.

kenorb
sumber
Bekerja di cygwin juga di mana tidak ada ldap.conffile yang ada untuk mengatur TLS_REQCERTparameter.
bvj
7

Saya tidak yakin tentang konversi dari pem ke cer, tetapi untuk membuat ldapsearch menggunakan sertifikat tanpa ldap.conf atau tanpa izin untuk mengubah sertifikat global Anda harus dapat melakukan ini:

env LDAPTLS_CACERT=/path/to/cert ldapsearch
Tink
sumber
1

Menggunakan

LDAPTLS_REQCERT=never

menghapus validasi sertifikat server LDAP. Ini mengosongkan keamanan yang disediakan oleh TLS di tempat pertama. Jangan lakukan ini. Anda harus memperbaiki sertifikat jika ada masalah, dan kemudian memberikan klien LDAP dengan otoritas sertifikat seperti yang dijelaskan oleh tink.

returntosender404
sumber