O link de Roger apodreceu, aqui está o mesmo no WayBack Machine do Internet Archive, a partir da última data arquivada antes dele mudar seu site: link
Eu também tomei a liberdade de anexar o conteúdo dele abaixo:
O ponto de partida
Suponho que você tenha uma instalação de openldap funcional (não protegida) usando cn = config (o banco de dados LDAP) para configuração em vez da variação do estilo antigo slapd.conf. Se você está fazendo alterações editando o arquivo slapd.conf, então o resto deste artigo não é para você!
PASSO UM
Crie alguns certificados autoassinados para começar.
Se você já criou alguns certificados para um servidor da Web usando o openssl, a primeira coisa que vai te surpreender é que eles não funcionam com o ldap. Você precisa de certificados em um formato diferente e, para gerá-los, precisamos de uma nova ferramenta que você ainda não tenha.
sudo -i
apt-get update
apt-get install gnutls-bin
certtool --generate-privkey --outfile /etc/ssl/private/ldap-ca-key.pem
certtool --generate-self-signed --load-privkey /etc/ssl/private/ldap-ca-key.pem --outfile /etc/ssl/certs/ldap-ca-cert.pem
Corrija suas permissões - os arquivos resultantes precisam ser legíveis pelo grupo openldap.
Para isso, adicione o usuário openldap ao grupo ssl-cert e, em seguida, assegure-se de que os certificados e chaves sejam de propriedade do grupo ssl-cert. Lembre-se de que o diretório / etc / ssl / private tem permissões restritas para que você precise fazer isso corretamente.
adduser openldap ssl-cert
chgrp /etc/ssl/private/ldap-ca-key.pem
PASSO DOIS
Crie um arquivo ssl.ldif adequado para importação no banco de dados de configuração. Vale a pena dizer, neste momento, que os que eu vi online tiveram erros de sintaxe que os impediram de funcionar - e eles falham silenciosamente, o que faz você pensar que eles funcionaram! Note especialmente que os hífens são sintaticamente importantes.
dn: cn=config
changetype: modify
add: olcTLSCipherSuite
olcTLSCipherSuite: NORMAL
-
add: olcTLSCRLCheck
olcTLSCRLCheck: none
-
add: olcTLSVerifyClient
olcTLSVerifyClient: never
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap-ca-cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap-ca-key.pem
AVISO: Não seja inteligente e mude o TLSCipherSuite para algo inteligente como HIGH: MEDIUM: -SSLv2 - esta é uma diretiva openssl e você verá que não é possível reiniciar o slapd, pois ele falhará na inicialização: - (Para diagnosticar isso, tente iniciar o slapd com o seguinte comando;
slapd -d 16383
Se você fizer isso, provavelmente verá o seguinte:
TLS: could not set cipher list HIGH:MEDIUM:+SSLv2.
main: TLS init def ctx failed: -1
Você pode corrigir isso editando /etc/ldap/slapd.d/cn=config.ldif diretamente se tiver cuidado.
PASSO TRÊS
Importe o arquivo ssl.ldif e fique atento ao que você deve ver quando funcionar, ao contrário do que você verá quando isso não acontecer. Também esteja ciente de que, se você estiver executando isso várias vezes, será necessário alterar o add para substituir no arquivo ssl.ldif.
ldapmodify -Y EXTERNAL -H ldapi:/// -f ssl.ldif -v
O -v fornece uma saída detalhada. Certifique-se de ver as novas entradas sendo impressas, se ela disser algo como:
modifying entry "cn=config"
modify complete
Então isso NÃO significa que funcionou. Isso provavelmente significa que ele não processou o arquivo devido a erros e nenhuma alteração foi realmente feita. Você precisa ver listar as entradas que ele modificou.
Por exemplo, esta é uma versão funcional (usando substituir, não adicionar)
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
replace olcTLSCipherSuite:
NORMAL
replace olcTLSCRLCheck:
none
replace olcTLSVerifyClient:
never
replace olcTLSCertificateFile:
/etc/ssl/certs/ldap2-ca-cert.pem
replace olcTLSCertificateKeyFile:
/etc/ssl/private/ldap2-ca-key.pem
modifying entry "cn=config"
modify complete
PASSO QUATRO
Certifique-se de que o slapd esteja atento a ldaps: // connections
Vamos editar novamente um arquivo (alguém está pensando que usar cn = config está causando mais aborrecimentos do que resolve?), Desta vez precisamos editar /etc/default/slapd
e alterar a linha SLAPD_SERVICES para que ela tenha os ldaps: /// entrada como mostrado aqui;
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
PASSO CINCO
Corrija o problema do certificado não confiável.
Você acha que já teríamos terminado, mas acontece que há uma configuração em outro arquivo que é realmente importante. Se você tentar se conectar agora, usando uma linha de comando que se liga ao servidor ldap como este;
ldapsearch -d 9 -D “cn=admin,dc=mydomain,dc=com” -w adminpassword -b “dc=mydomain,dc=com” -H “ldaps://mydomain.com” “objectClass=*”
Você provavelmente vai conseguir;
TLS: peer cert untrusted or revoked (0x42)
TLS: can't connect: (unknown error code).
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Para resolver isso, edite o arquivo /etc/ldap/ldap.conf (note que este não é o arquivo slapd.conf - pode ser um pouco confuso) e adicione a única linha abaixo ao que é provavelmente um completamente comentado. arquivo fora;
TLS_REQCERT nunca
Agora deve funcionar!