Openldap
無法為 OpenLDAP 配置 TLS 選項
我正在努力為新的 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
訪問該文件。我改為
olcLogLevel
(any
從而證明我能夠修改配置)並檢查了調試輸出,但我看到的內容對我未經訓練的眼睛沒有任何資訊價值。這是發生錯誤 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= [...]
誰能給我一個提示我在這裡可能做錯了什麼?我發現完全莫名其妙的是,我可以成功修改簡單的選項,例如
olcLogLevel
orolcPasswordHash
,但是當我嘗試對類似簡單的 TLS 選項(例如olcTLSCipherSuite
.
問題與
olcTLSCipherSuite: HIGH
是 GnuTLS 不知道“HIGH”密碼套件,因為這是僅 OpenSSL 支持的方便名稱。如果您想查看 GnuTLS 支持的可用密碼名稱,請執行命令
gnutls-cli -l
。安裝gnutls-bin
Debian 軟體包以訪問該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