OpenLDAP 마스터-슬레이브 아키텍처가 있습니다. 어느 날 LDAP 슬레이브에서 slapd 서비스를 다시 시작한 후 로그에서 TLS 협상 문제를 발견했습니다.서비스를 다시 시작하기 전에는 문제 없이 작동하고 있었습니다.
그런 다음 문제를 디버깅하려고 시도했는데 TLS 협상 문제를 유발하는 몇 가지 일반적인 문제를 발견했습니다.
- SSL 인증서가 만료될 수 있습니다.- 제 경우는 그렇지 않습니다. 인증서가 유효한지 확인했습니다.
- 인증서 CN 이름이 서버 이름과 일치하지 않습니다.- 제 경우에는 인증서 CN=*.example.com이고 서버 이름은 ldap.example.com & ldap-slave.example.com입니다.
- 인증서 파일의 권한 문제- 2개의 디렉터리(인증서 - [인증서 및 ca 인증서 및 키 포함], cacert - [cacert만 포함])가 있는데 두 디렉터리 모두 읽기 및 쓰기 권한이 있고 LDAP 사용자가 소유합니다.
다음은 slapd에서 사용하는 구성입니다.
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/openldap/slapd.args
olcDisallows: bind_anon
olcLogLevel:: YW55IA==
olcPidFile: /var/run/openldap/slapd.pid
olcRequires: authc
olcTLSCACertificateFile: /etc/openldap/certs/example.ca.crt
olcTLSCACertificatePath: /etc/openldap/certs
olcTLSCertificateFile: /etc/openldap/certs/example.crt
olcTLSCertificateKeyFile: /etc/openldap/certs/example.key
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib64/openldap
olcModuleLoad: {0}syncprov.la
dn: cn=module{1},cn=config
objectClass: olcModuleList
cn: module{1}
olcModulePath: /usr/lib64/openldap
olcModuleLoad: {0}auditlog.la
여기 내 ldap.conf 파일이 있습니다
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
#TLS_CACERT /etc/openldap/cacerts/example.ca.crt
#TLS_REQCERT demand
TLS_CACERTDIR /etc/openldap/cacerts
#TLS_CACERT /etc/openldap/certs/example.ca.crt
TLS_REQCERT allow
# Turning this off breaks GSSAPI used with krb5 when rdns = false
SASL_NOCANON on
URI ldaps://ldap.example.com/ ldaps://ldap-slave.example.com/
BASE dc=example,dc=com
문제를 디버깅할 수 있도록 도와주세요.
답변1
도움이 될 만한 오류가 포함된 로그를 얻을 수 있나요?
또한 olcCACertificatePath와 olcCACertificateFile이 모두 필요하지 않습니다. 저에게는 olcCACertficatePath만으로 구성하면 충분합니다. 그것이 오류의 원인인지는 모르겠지만 오류 중 하나를 삭제해 볼 수 있습니다.