Назад | Перейти на главную страницу

Корневой сертификат CA в конфигурации pam_ldap не будет работать без tls_checkpeer нет

Системы - 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 в качестве имени, которое найдет символическую ссылку и сможет открыть файл.