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.