Назад | Перейти на главную страницу

Как включить TLS в OpenLDAP, когда репликация уже запущена

Я настроил репликацию между двумя хостами, следуя этот отличный мануал. Репликация работает нормально - уже пару месяцев.

Теперь я тоже хочу включить TLS (репликация не требует TLS).

Поскольку на хосте стоит Ubuntu Linux, я следил за этот руководство по созданию самоподписанного сертификата SSL, и теперь я остановился на шаге по изменению конфигурации сервера. Это мой файл LDIF:

$ cat tls.ldif 
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ldap_slapd_cacert.pem

dn: cn=config
changetype: modify
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap_slapd_key.pem

dn: cn=config
changetype: modify
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap_slapd_cert.pem

И команда для импорта не работает:

$ ldapmodify  -H ldapi:// -Y EXTERNAL -f ~/tls.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
ldap_modify: Server is unwilling to perform (53)

Использование комбинации IP-адреса, TCP-порта и учетных данных ничего не меняет.

OLC Mirror Mode включен:

$ slapcat -n 0
[ -cut- ]
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by     
 dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth manage by * break
structuralObjectClass: olcDatabaseConfig
entryUUID: c7822d8e-30c4-1037-8e8b-4fac89b22db9
createTimestamp: 20170918135531Z
olcRootDN: cn=admin,cn=config
refreshAndPersist retry="5 5 300 5" timeout=1
olcMirrorMode: TRUE
[ -cut- ]

Что здесь не так?

Вернемся к началу, стираем файлы сертификатов, ключей и информации, а затем все новое.

Это сработало.

Очевидно, я раньше что-то не так делал. Хотя сертификаты и ключи SSL выглядели нормально, это не так. И, что еще более удивительно: вставка трех значений - это больше, чем глупая вставка значений, они, очевидно, проверяются при настройке.

Попробуйте изменить свой файл LDIF, чтобы он выглядел так:

dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ldap_slapd_cacert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap_slapd_key.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap_slapd_cert.pem

Это должно означать, что ваши три дополнения рассматриваются как одно изменение, а не как три отдельных. OpenLDAP, вероятно, придирчив, потому что видит каждое изменение изолированно.