Tôi đang cố gắng thiết lập xác thực LDAP bằng STARTTLS (Tôi đọc rằng TLS / ldaps không được chấp nhận). Xác thực LDAP không được mã hóa của BTW hoạt động nhưng đó không phải là điều tôi muốn.
Tôi đã quản lý để thiết lập máy chủ thư mục LDAP bằng hướng dẫn này bắt đầu từ bản cài đặt Ubuntu Server 16.10 mới (2 máy VirtualBox, một cho máy chủ, một cho máy khách) và theo dõi từng bước bao gồm bước cuối cùng tùy chọn để chỉ cho phép kết nối TLS.
Bây giờ tôi có thể chạy ldapwhoami
và ldapsearch
ra lệnh với -Z
đối số trên cả máy chủ và máy khách. Vì vậy, có vẻ như các kết nối LDAP đến máy chủ thông qua STARTTLS hoạt động. Khi tôi cố gắng kết nối mà không gặp phải -Z
lỗi (dự kiến) sau:
Confidentiality required (13)
Additional information: TLS confidentiality required
Bây giờ tôi muốn sử dụng máy chủ để xác thực người dùng LDAP trên máy khách. Đối với điều này, tôi đã chạy các lệnh sau trên máy khách :
sudo apt-get install ldap-auth-client
# LDAP Server: ldap://ldap.example.com
# Base DN: dc=example,dc=com
# Bind DN: cn=admin,dc=example,dc=com
sudo auth-client-config -t nss -p lac_ldap
sudo vi /usr/share/pam-configs/mkhomedir
# changed "Default: no" to "Default: yes"
# changed "optional" to "required"
sudo pam-auth-update
# enabled "Create home directory on login"
Bây giờ khi tôi muốn thay đổi người dùng trên máy khách với su - otheruser
thông báo lỗi sau sẽ được thêm /var/log/auth.log
vào máy khách:
nss_ldap: failed to bind to LDAP server ldap://ldap.example.com: Confidentiality required
Đây là thông báo lỗi giống như khi tôi cố chạy các lệnh LDAP mà không có STARTTLS (xem bên trên), do đó, vấn đề dường như nss_ldap
là không được cấu hình đúng để sử dụng STARTTLS.
Những gì tôi đã cố gắng (không thành công) là thêm các mục vào /etc/ldap/ldap.conf
. Bây giờ nó trông như thế này:
BASE dc=example,dc=com
URI ldap://ldap.example.com
TLS_CACERT /etc/ldap/ca_certs.pem
LDAP_VERSION 3
SSL start_tls
TLS_REQCERT allow