Configurando um cliente Linux para OpenLDAP sobre SSL

3

Estou tentando configurar o SSL com um servidor executando o OpenLDAP (e usando o OpenSSL, não o GnuTLS).

O servidor parece estar funcionando bem: posso autenticar usando ldap:// e também posso usar ldaps:// do Apache Directory Studio. Eu também posso usar LDAPS do cliente, contanto que eu tenha esta configuração em /etc/ldap.conf:

tls_checkpeer no

Assim que eu tentar usar tls_checkpeer yes , a conexão SSL será recusada.

Eu tenho as seguintes configurações no servidor:

olcTLSCACertificateFile  /etc/ssl/certs/cacert.pem
olcTLSCertificateFile    /etc/ssl/private/newcert.pem
olcTLSCertificateKeyFile /etc/ssl/private/newreq.pem

O cliente tem estas entradas relacionadas:

# ssl on
uri ldaps://192.168.1.15
tls_checkpeer no
# tls_cacertdir /etc/ssl/certs
# tls_cacertfile /etc/ssl/certs/cacert.pem

O arquivo /etc/ssl/certs/cacert.pem é acessível aos usuários para leitura. Com a configuração acima, funciona. Se eu remover o comentário de uma das duas entradas de configuração comentadas tls_* e mudar para tls_checkpeer yes , isso falhará.

Eu tentei usar cacert.pem e newcert.pem para o certificado ( tls_cacertfile ) e não funcionou. O cacert.pem tem uma seção -----BEGIN CERTIFICATE----- , como o newcert.pem.

No entanto, o cacert.pem tem isso em X509v3 extensions :

X509v3 Basic Constraints: 
    CA:TRUE

... e o arquivo newcert.pem tem isso na mesma seção:

X509v3 Basic Constraints: 
    CA:FALSE
Netscape Comment: 
    OpenSSL Generated Certificate

Outros certificados em / etc / ssl / certs não contêm nada, exceto o bloco marcado por BEGIN CERTIFICATE .

Usando este comando:

openssl s_client -connect 192.168.6.144:636 -showcerts

Eu posso ver o conteúdo de cacert.pem e newcert.pem sendo usado para a sessão.

Eu não fiz alterações no /etc/ldap/ldap.conf no cliente ou no servidor.

Erros do cliente incluem:

Feb  8 14:32:24 foo nscd: nss_ldap: could not connect to any LDAP server as cn=admin,dc=example,dc=com - Can't contact LDAP server
Feb  8 14:32:24 foo nscd: nss_ldap: failed to bind to LDAP server ldaps://bar: Can't contact LDAP server
Feb  8 14:32:24 foo nscd: nss_ldap: could not search LDAP server - Server is unavailable

Não há entradas de registro especiais no servidor. O cliente é o Ubuntu Lucid Lynx 10.04, assim como o servidor. Todos estão usando o nscd.

A tentativa de replicar o problema em um sistema Red Hat Enterprise Linux 5.7 falha na direção oposta: algo que provavelmente deve falhar, não: usando tls_checkpeer yes com um diretório tls_cacertdir vazio. Eu preciso de SSL para trabalhar em ambos os sistemas; temos uma mistura de Ubuntu e RHEL.

Eu reiniciei o nscd após cada alteração de configuração.

Estas são minhas perguntas reais:

  • Como faço para que a opção tls_checkpeer funcione? (questão principal)
  • O ssl on realmente faz alguma coisa no cliente?

Obrigado.

    
por Mei 08.02.2012 / 21:42

1 resposta

2

No cliente e no servidor, tente adicionar o seguinte ao /etc/ldap/ldap.conf

TLS_REQCERT never

A propósito, o SSL parece estar obsoleto no openldap e é melhor usar o TLS. Consulte o link em busca de "OpenLDAP SDK". A configuração é a mesma, exceto que você usará a porta 389 e não usará "ldaps: //" no uri.

    
por 24.02.2012 / 00:25