我有 OpenLDAP 主從架構。有一天,我在 LDAP Slave 中重新啟動了 slapd 服務,然後在日誌中發現了 TLS 協商問題。重新啟動服務之前,它運行正常,沒有任何問題
然後我嘗試調試該問題,發現一些常見問題會觸發 TLS 協商問題。
- SSL 憑證可能會過期- 對於我的,情況並非如此,我已驗證證書有效
- 憑證 CN 名稱與伺服器名稱不匹配- 就我而言,我的憑證 CN=*.example.com,我的伺服器名稱是 ldap.example.com 和 ldap-slave.example.com。
- 證書檔案中的權限問題- 我有 2 個目錄(certs - [包含憑證和 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,對我來說,僅使用 olcCACertificatePath 的配置就足夠了。我不知道這是否是您錯誤的根源,但您可以嘗試刪除其中之一。