Replicação do modo de espelho OpenLDAP falhando com o TLS por trás de um balanceador de carga

1

Eu tenho dois servidores OpenLDAP que estão executando o TLS. Eles são:

ldap1.mydomain.com
ldap2.mydomain.com

Eu também tenho um cluster de balanceador de carga com um nome de DNS próprio:

ldap.mydomain.com

O certificado SSL tem um CN de ldap.mydomain.com, com SANs de ldap1.mydomain.com e ldap2.mydomain.com.

Tudo funciona ... Exceto a replicação no modo espelho.

Minha replicação no modo espelho é configurada assim:

ldap.conf

TLS_REQCERT allow

cn = config.ldif

olcServerID: 1 ldap://ldap1.mydomain.com
olcServerID: 2 ldap://ldap2.mydomain.com

Em ldap1, olcDatabase {1} hdb.ldif

olcMirrorMode: TRUE
olcSyncrepl: {0}rid=001 provider=ldap://ldap2.mydomain.com bindmethod=simple bindmethod=simple binddn="cn=me,dc=mydomain,dc=com" credentials="REDACTED" starttls=yes searchbase="dc=mydomain,dc=com" schemachecking=on type=refreshAndPersist retry="60 +"

Em ldap2, olcDatabase {1} hdb.ldif

olcMirrorMode: TRUE
olcSyncrepl: {0}rid=001 provider=ldap://ldap1.mydomain.com bindmethod=simple bindmethod=simple binddn="cn=me,dc=mydomain,dc=com" credentials="REDACTED" starttls=yes searchbase="dc=mydomain,dc=com" schemachecking=on type=refreshAndPersist retry="60 +"

Aqui estão os erros que estou recebendo no syslog:

Dec  1 21:05:01 ldap1 slapd[6800]: slap_client_connect: URI=ldap://ldap2.mydomain.com DN="cn=me,dc=mydomain,dc=com" ldap_sasl_bind_s failed (-1)
Dec  1 21:05:01 ldap1 slapd[6800]: do_syncrepl: rid=001 rc -1 retrying
Dec  1 21:05:08 ldap1 slapd[6800]: conn=1111 fd=20 ACCEPT from IP=ldap.mydomain.com:2295 (IP=ldap1.mydomain.com:636)
Dec  1 21:05:08 ldap1 slapd[6800]: conn=1111 fd=20 closed (TLS negotiation failure)

Alguma ideia? Eu tenho trabalhado no OpenLdap por muito tempo agora.

    
por Lynn Owens 02.12.2012 / 04:14

2 respostas

1

Corrigido. Houve dois problemas.

1) O CSR do certificado mostrou claramente nomes alternativos para os dois servidores LDAP individuais. Eu assinei usando o comando openssl usual que utilizo para assinar e nunca verifiquei o certificado em si. Acontece que o certificado não tem os nomes alternativos do assunto, porque eles exigem extensões v3 especiais. Aqui está o comando que eu usei.

openssl x509 -req -days 3650 -in ldap.csr -signkey ldapskey.pem -out cert.pem -extensions v3_req -extfile /etc/ssl/openssl.cnf

2) A senha REDACTED que eu tinha na minha diretiva olcSyncrepl era na verdade o hash SSHA. Parece que não é legal. Eu substitui o hash SSHA pela senha de texto não criptografado.

Ah, e também limpei as sobreposições de syncprov, de modo que apenas uma sobreposição existia em cada um dos bancos de dados reais - não nos bancos de dados de configuração.

BTW, achei um post do Howard Chu onde ele disse que o rid tem que ser único dentro da configuração do servidor, não dentro dos servidores de configuração de espelhamento. Então, sons como rid podem ser 001 em ambos os servidores, mas de qualquer forma, deixei 001 e 002 e não está prejudicando ninguém.

    
por 03.12.2012 / 06:52
0

Como declarado em 16.5.3. Configuração MirrorMode ,

You also need to make sure the rid of each mirror node pair is different...

Portanto, no ldap2 altere rid=001 para rid=002 .

    
por 02.12.2012 / 06:44