Системы - Debian Squeeze и Ubuntu Precise с идентичными конфигурациями. Версия libpam-ldap 184-8.5 для обоих дистрибутивов.
Все отлично работает со следующей конфигурацией в /etc/pam_ldap.conf
.
host 10.220.100.11
base ou=companies,ou=asp,ou=sweden,dc=domain,dc=inet
ldap_version 3
ssl on
tls_checkpeer no
binddn svc_unix_auth
bindpw secret
scope sub
timelimit 30
pam_filter objectclass=User
nss_map_attribute uid sAMAccountName
pam_login_attribute sAMAccountName
pam_password crypt
pam_groupdn CN=Linux_Authentication,OU=Groups,OU=ourcompany,OU=Companies,OU=ASP,OU=sweden,DC=domain,DC=inet
Только одно изменение в конфигурации pam, в /etc/pam.d/common-auth
.
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_ldap.so use_first_pass
Вторая строка - это то, что было добавлено для включения логинов ldap.
Как только мы удалим tls_checkpeer no
из файла /etc/pam_ldap.conf
это не удается, потому что сервер LDAP имеет самоподписанный сертификат.
Пытался экспортировать сертификат корневого ЦС в формате base64 с сервера LDAP и поместить его в / etc / ssl / certs с разрешениями 0644. Затем добавив tls_cacertfile /etc/ssl/certs/ldap_server.crt
в pam_ldap.conf
но это не помогает.
Как я могу использовать корневой ЦС и не отключать проверку самоподписанных сертификатов?
Насколько я могу судить, pam_ldap использует openssl
для его функциональности TLS, или использует аналогичную функциональность, которая встроена в сам pam_ldap. openssl
необходимо, чтобы имя файла ca было значением хэша объекта, за которым следует ".0", или, если уже есть другой сертификат CA с этим хешем, увеличьте 0 до 1 или 2 или любого другого следующего неиспользованного числа было бы. Обычно рекомендуется оставить фактическое имя файла сертификата CA с понятным именем, чтобы вы знали, что это такое, и создать на него символическую ссылку с именем, в котором используется хэш субъекта, за которым следует ".0" или любой другой доступный номер. Чтобы найти хеш:
openssl x509 -hash -in /etc/ssl/certs/ldap_server.crt
Это вернет шестнадцатеричное число, например ea12345.
Чтобы создать символическую ссылку, которая понравится openssl и pam_ldap:
ln -s /etc/ssl/certs/ldap_server.crt /etc/ssl/certs/ea12345.0
Затем удалите строку «tls_cacertfile /etc/ssl/certs/ldap_server.crt» и добавьте вместо нее строку «tls_cacertdir / etc / ssl / certs /». Он будет хешировать имя субъекта ЦС, когда сервер LDAP представляет свой сертификат сервера, и попытается найти файл сертификата ЦС через ea12345.0 в качестве имени, которое найдет символическую ссылку и сможет открыть файл.