使用 GnuTLS 和 TLS=required 配置 OpenLDAP
我們有一個 openldap 伺服器,不想允許未加密的通信,所以可以接受 tls over 389 (
starttls
) 或 ssl over 636 (ldaps
)。當我們使用 slapd.conf 進行配置時,
olcSecurity
這不是一個選項。
TLSCipherSuite
似乎是使用 slapd.conf 的方法。但是,當使用該 slapd 時,要麼不啟動,要麼忽略設置(即接受未加密的請求)。使用時 slapd 無法啟動(錯誤:TLS init def ctx failed:-1):
- TLSCipherSuite ALL - TLSCipherSuite Default - TLSCipherSuite ALL:!NULL - TLSCipherSuite ALL:!aNULL - TLSCipherSuite AES256-SHA #one of the ciphers offered by openssl
slapd 啟動但在使用時接受未加密的請求:
- TLSCipherSuite NORMAL - TLSCipherSuite NORMAL:!NULL #would be acceptable - TLSCipherSuite !NULL #would be acceptable
我們測試
ldapsearch -L -x -W -h [SERVER] -D [USER] - b [SEARCHBASE] uid=[USER]
(未加密)
和
ldapsearch -L -x -W -ZZ -h [SERVER] -D [USER] - b [SEARCHBASE] uid=[USER]
(加密)
執行 openldap 的作業系統是 debian 8.7。openldap 版本似乎使用的是 gnutls,而不是 openssl,所以這可能是問題的原因。
但是最後三個
TLSCipherSuite
變體似乎是有效的語法,至少 slapd 開始時沒有錯誤。為什麼不!NULL
阻止 slapd 接受未加密的請求?最後兩個(使用任何可用的密碼,但不允許沒有密碼)是可以接受的。是否需要額外的設置/參數?
請注意,我們嘗試了此處給出的建議(如上所述),但沒有奏效。
停止使用
slapd.conf
,但這只是一般建議。大多數(如果不是全部olc*
)指令slapd-config
都可用作slapd.conf
樣式配置的非 olc 指令。除非您還執行非 TLS SASL,否則應該足夠
security
了。security tls=1
您的操作
TLSCipherSuite
將不起作用,因為這些操作僅在使用 TLS 後才控制可接受的密碼,選擇是否使用/需要 TLS 並不重要。為此,您需要使用security
. 但是,您應該使用更好的 TLS 選項,例如至少TLSCipherSuite HIGH:!aNull:!MD5:@STRENGTH
和olcTLSProtocolMin 3.1
.來自
slapd.conf(5)
:
security <factors>
指定一組需要的安全強度因子(由空格分隔)(請參閱**
sasl-secprops's minssf
**選項以獲取安全強度因子的描述)。該指令可以在全域和/或每個數據庫中指定。 **ssf=<n>
**指定整體安全強度因子。 **transport=<n>
**指定傳輸安全強度因子。tls=<n>
指定 TLS 安全強度因子。 **sasl=<n>
指定 SASL 安全強度因子。update_ssf=<n>
指定目錄更新所需的整體安全強度因子。update_transport=<n>
指定目錄更新所需的傳輸安全強度因子。update_tls=<n>
指定目錄更新所需的 TLS 安全強度因子。update_sasl=<n>
指定目錄更新所需的 SASL 安全強度因子。simple_bind=<n>
**指定簡單使用者名/密碼驗證所需的安全強度因子。請注意,傳輸因子是底層傳輸提供的安全性度量,例如 ldapi://(最終是 IPSEC)。它通常不使用。