Tiba-tiba, kemarin, salah satu server apache saya menjadi tidak dapat terhubung ke server LDAP (AD) saya. Saya memiliki dua situs yang berjalan di server itu, yang keduanya menggunakan LDAP untuk auth terhadap server AD saya ketika pengguna masuk ke salah satu situs. Sudah berfungsi dengan baik dua hari yang lalu. Untuk alasan yang tidak diketahui, sampai kemarin, itu berhenti bekerja. Log kesalahan hanya mengatakan ini:
auth_ldap authenticate: user foo authentication failed; URI /FrontPage [LDAP: ldap_simple_bind_s() failed][Can't contact LDAP server], referer: http://mysite.com/
Saya pikir mungkin sertifikat SSL saya yang ditandatangani sendiri telah kedaluwarsa, jadi saya membuat yang baru untuk mysite.com, tetapi tidak untuk nama host server itu sendiri, dan masalahnya tetap ada. Saya mengaktifkan logging tingkat debug. Ini menunjukkan transaksi SSL penuh dengan server LDAP, dan tampaknya menyelesaikan tanpa kesalahan sampai akhir ketika saya mendapatkan pesan "Tidak dapat menghubungi server LDAP". Saya dapat menjalankan ldapsearch dari commandline di server ini, dan saya bisa masuk ke sana, yang juga menggunakan LDAP, jadi saya tahu bahwa server dapat terhubung ke dan meminta server LDAP / AD. Hanya apache yang tidak dapat terhubung.
Mencari jawaban di Google tidak menghasilkan apa-apa, jadi saya bertanya di sini. Adakah yang bisa memberikan wawasan tentang masalah ini?
Inilah bagian LDAP dari konfigurasi apache:
<Directory "/web/wiki/">
Order allow,deny
Allow from all
AuthType Basic
AuthName "Login"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
#AuthBasicAuthoritative off
AuthLDAPUrl ldaps://domain.server.ip/dc=full,dc=context,dc=server,dc=name?sAMAccountName?sub
AuthLDAPBindDN cn=ldapbinduser,cn=Users,dc=full,dc=context,dc=server,dc=name
AuthLDAPBindPassword password
require valid-user
</Directory>
sumber
Jawaban:
Paket jejak dari server httpd / klien LDAP mengungkapkan pesan tentang CA yang tidak dikenal.
Peringatan TLSv1 (Level: Fatal, Deskripsi: CA tidak dikenal)
Saya menemukan dan menambahkan opsi berikut ke httpd.conf saya:
Itu memperbaiki masalah saya di bawah CentOS 6. Server CentOS 5 httpd tidak memerlukan modifikasi apa pun dan telah bekerja selama ini tanpa opsi.
sumber
Saya memiliki masalah yang mirip dengan ini sebelumnya dengan AD pada Windows 2003: solusi yang saya temukan adalah tidak mengikat menggunakan DN lengkap tetapi alih-alih menggunakan sintaks pengguna @ domain:
sumber
Apakah Anda memiliki akses ke log dari server LDAP Anda? Mereka mungkin membantu dalam memecahkan masalah ini.
sumber
Saya telah melihat ini ketika pembaruan paket menyebabkan perubahan pada ldap.conf klien (biasanya /etc/ldap.conf atau /etc/openldap/ldap.conf) dan mengatur ulang opsi TLS_REQCERT ke pengaturan yang lebih ketat. Itu dapat menegosiasikan SSL dengan benar, tetapi masih akan gagal pada akhirnya karena tidak dapat memvalidasi rantai sertifikat dari root tepercaya.
sumber
Anda mungkin ingin memeriksa jam server. Jika perbedaan waktu lebih dari beberapa menit, tiket otentikasi akan tidak valid.
Meskipun ini bukan pesan kesalahan, bagian 'server lain tiba-tiba mendapat masalah yang sama' mungkin mengindikasikan masalah seperti itu.
sumber
Anda perlu menerapkan sertifikat LDAP CA untuk bekerja dengan LDAPS
sumber
Saya memiliki masalah serupa, yang telah saya identifikasi dengan menjalankan perintah ini:
openssl s_client -connect $ldap_host:636 -state -nbio 2>&1
. Saya pikir mod_ldap menggunakan openssl di bawahnya, jadi ini harus cukup konsisten untuk debugging.Saya membandingkannya dengan server terenkripsi SSL lain yang saya tahu berfungsi. Koneksi SSL yang terverifikasi dengan benar akan menunjukkan rantai menuju ke CA root dan mengembalikan 0. Kegagalan verifikasi SSL akan memberikan nomor dan alasan. Anda dapat menggunakan output untuk menentukan apa yang salah.
Dalam kasus saya, sertifikat server LDAP ditandatangani oleh Verisign, yang menggunakan sertifikat CA Menengah . OpenSSL tidak dapat memverifikasi sertifikat dan koneksi ditolak ("koneksi ditolak oleh server" tidak membantu).
sumber
Saya punya masalah serupa. Saya dapat memperoleh sertifikat dengan openssl, saya dapat meminta Active Directory melalui SSL dengan ldapsearch pada port yang sama. Akhirnya saya berubah ke port Microsoft Global Catalog 3268 atau 3269 dan keduanya bekerja. Server Microsoft Windows 2003 telah ditambal, tetapi itu terjadi beberapa hari sebelum masalah mulai terjadi.
sumber
Saya menerapkan LDAPS di semua server kami dan juga mengalami masalah ini. Apakah akan hilang jika Anda kembali ke plaintext LDAP (Tidak ideal, tetapi berguna untuk mengetahui sumber masalahnya). Jika demikian, saya belum menemukan solusi, tetapi mungkin bersama-sama kita dapat mengisolasi bug di authnz_ldap.
sumber
Saya berasumsi bahwa percobaan baris perintah Anda menggunakan "pengguna bind" yang sama seperti pada konfigurasi apache Anda. Jika tidak, Anda harus memeriksa apakah Anda memiliki kata sandi saat ini yang benar.
Di masa lalu, saya pernah menggunakan port katalog global alih-alih port LDAP standar untuk domain AD. Saya tidak ingat alasannya. Untuk ldaps seperti pada url Anda di atas, ini akan menjadi port 3269.
sumber
Cara kerjanya adalah situs web Anda harus terhubung ke AD menggunakan kredensial pengguna bind Anda terlebih dahulu, dan kemudian, setelah koneksi ini dibuat, ia menggunakan akses ini untuk memvalidasi kredensial pengguna yang mencoba mengakses situs web Anda.
Menurut pesan kesalahan Anda, sepertinya proses tidak dapat terhubung ke AD sebagai pengguna mengikat Anda (AuthLDAPBindDN).
Pastikan akun pengguna bind tidak dinonaktifkan di Direktori Aktif, dan kata sandi yang Anda tentukan (AuthLDAPBindPassword) benar . Juga, pastikan bahwa pengguna mengikat Anda memiliki izin yang diperlukan untuk mencari pengguna lain (harus menjadi anggota Pengguna Domain dalam kasus kami)
sumber
Saya baru saja mengalami masalah ini ("tidak dapat menghubungi server ldap") di RHEL6, dan itu adalah hasil dari perubahan pada openldap. yum telah memperbarui file config /etc/openldap/ldap.conf tetapi alih-alih menimpanya (seandainya itu dikustomisasi; dalam kasus saya itu tidak) ia membuat file ldap.conf.rpmnew.
Menyalin versi .rpmnew lebih dari ldap.conf memperbaiki masalah.
(Saya tidak bisa setuju bahwa mematikan verifikasi sertifikat adalah jawaban untuk ini. Ini menghindari masalah yang berpotensi berbahaya.)
sumber
Saya berhasil memperbaiki masalah ini dengan menginstal
berkelydb
danopenldap
paket yang ditemukan di sini .Perbedaannya adalah bahwa RedHat telah mulai menghubungkan berbagai hal,
nss
bukanopenssl
untuk dukungan SSL. Dalam hal ini, itu menghancurkan semua hal. Menginstal paket-paket ini (yang terkait dengan openssl) memperbaiki masalah. Dapatkan paket dan jalankan:Kemudian restart apache, dan Anda harus menjalankan bisnis.
sumber
Saya memiliki masalah yang sama setelah memutakhirkan dari rhel6.6 ke rhel7.5. Ketika saya kehabisan ide saya menyimpulkan mod_ssl pada apache 2.2.32 mungkin tidak 100% kompatibel di rhel7.4. Saya memutakhirkan dari Apache 2.2.32 ke Apache2.4, mengaktifkan SSL, dan sldap berfungsi.
sumber