OpenLDAP 中的 TLS 協商問題

OpenLDAP 中的 TLS 協商問題

我有 OpenLDAP 主從架構。有一天,我在 LDAP Slave 中重新啟動了 slapd 服務,然後在日誌中發現了 TLS 協商問題。重新啟動服務之前,它運行正常,沒有任何問題

然後我嘗試調試該問題,發現一些常見問題會觸發 TLS 協商問題。

  1. SSL 憑證可能會過期- 對於我的,情況並非如此,我已驗證證書有效
  2. 憑證 CN 名稱與伺服器名稱不匹配- 就我而言,我的憑證 CN=*.example.com,我的伺服器名稱是 ldap.example.com 和 ldap-slave.example.com。
  3. 證書檔案中的權限問題- 我有 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 的配置就足夠了。我不知道這是否是您錯誤的根源,但您可以嘗試刪除其中之一。

相關內容