我们有一个 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)
:如果您必须继续使用 slapd.conf,那么此线程包含您需要的答案:
在密码选择方面,Zytrax 的 LDAP for Rocket Scientists提供了一些提示:
您需要更改
TLS_CIPHER_SUITE
为TLSCipherSuite
,我怀疑您可能想检查哪些密码名称可以使用(来自admin guide):