Estou tentando configurar a autenticação LDAP com STARTTLS (li que o TLS / ldaps foi preterido). A autenticação LDAP não criptografada BTW funciona, mas não é isso que eu quero.
Consegui configurar um servidor de diretório LDAP usando este tutorial a partir de uma nova instalação do Ubuntu Server 16.10 (2 máquinas VirtualBox, uma para o servidor, uma para o cliente) e seguiu todas as etapas, incluindo a última etapa opcional para permitir apenas conexões TLS.
Agora, posso executar os comandos ldapwhoami
e ldapsearch
com o argumento -Z
no servidor e no cliente. Assim, parece conexões LDAP para o servidor via trabalho STARTTLS. Quando tento me conectar sem -Z
, recebo o seguinte erro (esperado):
Confidentiality required (13)
Additional information: TLS confidentiality required
Agora, desejo usar o servidor para autenticar usuários LDAP no cliente. Para isso eu executei os seguintes comandos no cliente :
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"
Agora, quando eu quiser alterar o usuário no cliente com su - otheruser
, a seguinte mensagem de erro é anexada a /var/log/auth.log
no cliente:
nss_ldap: failed to bind to LDAP server ldap://ldap.example.com: Confidentiality required
Esta é a mesma mensagem de erro de quando eu tento executar comandos LDAP sem STARTTLS (veja acima), então o problema parece ser que nss_ldap
não está configurado corretamente para usar STARTTLS.
O que tentei (sem sucesso) é adicionar entradas a /etc/ldap/ldap.conf
. Agora parece com isso:
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