Openldap

無法為 OpenLDAP 配置 TLS 選項

  • January 22, 2020

我正在努力為新的 OpenLDAP 伺服器設置 TLS。系統是 Debian Jessie(更新到最新的 8.7 stable),我已經通過安裝包設置了伺服器,slapd迄今為止幾乎沒有任何修改。

我嘗試配置的一件事是 TLS 密碼套件。這是 LDIF:

dn: cn=config
changetype: modify
add: olcTLSCipherSuite
olcTLSCipherSuite: HIGH

當我嘗試使用以下命令送出此更改時:

ldapmodify -Y EXTERNAL -H ldapi:/// -f set-cipher-suite.ldif

我收到此錯誤:

ldap_modify: Server is unwilling to perform (53)

我還嘗試使用以下 LDIF 設置證書文件:

dn: cn=config
changetype: modify
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/foo.crt

在這裡,我收到錯誤 80 而不是錯誤 53。

ldap_modify: Other (e.g., implementation specific) error (80)

我仔細檢查了該文件是否存在並且可以slapd訪問該文件。

我改為olcLogLevelany從而證明我能夠修改配置)並檢查了調試輸出,但我看到的內容對我未經訓練的眼睛沒有任何資訊價值。這是發生錯誤 53 的程式碼段:

[...]
6 月 8 日 16:46:21 pelargir slapd[36937]:slap_queue_csn:排隊 0x7f3648f4a430 20160608144621.742848Z#000000#000#000000
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_required 條目(cn=config),objectClass“olcGlobal”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“objectClass”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“cn”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“olcArgsFile”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“olcLogLevel”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“olcPasswordHash”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“olcPidFile”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“olcToolThreads”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“structuralObjectClass”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“entryUUID”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“creatorsName”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“createTimestamp”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“olcTLSCipherSuite”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“entryCSN”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“modifiersName”
6 月 8 日 16:46:21 pelargir slapd[36937]:oc_check_allowed 類型“modifyTimestamp”
6 月 8 日 16:46:21 pelargir slapd[36937]:send_ldap_result:conn=1002 op=1 p=3
6 月 8 日 16:46:21 pelargir slapd[36937]: send_ldap_result: err=53matched="" text=""
6 月 8 日 16:46:21 pelargir slapd[36937]: send_ldap_response: msgid=2 tag=103 err=53
6 月 8 日 16:46:21 pelargir slapd[36937]: conn=1002 op=1 RESULT tag=103 err=53 text=
[...]

誰能給我一個提示我在這裡可能做錯了什麼?我發現完全莫名其妙的是,我可以成功修改簡單的選項,例如olcLogLevelor olcPasswordHash,但是當我嘗試對類似簡單的 TLS 選項(例如olcTLSCipherSuite.

問題與

olcTLSCipherSuite: HIGH

是 GnuTLS 不知道“HIGH”密碼套件,因為這是僅 OpenSSL 支持的方便名稱。如果您想查看 GnuTLS 支持的可用密碼名稱,請執行命令gnutls-cli -l。安裝gnutls-binDebian 軟體包以訪問該gnutls-cli實用程序。

問題與

olcTLSCertificateFile: /etc/ssl/certs/foo.crt

3年多後我無法繁殖。正如 Alexander Kjäll 在他的回答中指出的那樣,這畢竟可能是一個許可問題。

我遇到了同樣的問題,debian 中的 openldap 是針對 gnu-tls 包編譯的,預設情況下沒有安裝。

這可能會有所幫助:

apt install gnutls-bin

還要確保 openldap 使用者有足夠的權限來讀取證書。例如:

useradd letsencrypt
chown openldap:letsencrypt /etc/letsencrypt/ -R
usermod -a -G letsencrypt openldap

引用自:https://serverfault.com/questions/782719