我们有一个openldap服务器,不希望允许未加密的通信,因此可以接受的是端口389 (starttls)上的tls或ldaps上的SSLover636。
由于我们使用slapd.conf进行配置,所以olcSecurity不是一个选项。
TLSCipherSuite似乎是用slapd.conf做这件事的方法。但是当使用该slapd时,要么不启动,要么忽略设置(即接受未加密的请求)。
使用以下命令时slapd不会启动(错误: TLS init def ctx失败:-1):
- TLSCipherSuite ALL
- TLSCipherSuite Default
- TLSCipherSuite ALL:!NULL
- TLSCipherSuite ALL:!aNULL
- TLSCipherSuite AES256-SHA #one of the ciphers offered by opensslslapd启动但接受未加密请求时,使用:
- 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](加密)
os openldap正在运行的是Debian8.7。openldap版本似乎使用的是gnutls,而不是openssl,所以这可能是问题的原因。
但是最后三个TLSCipherSuite变体似乎是有效的语法,至少slapd开始时没有错误。为什么!NULL不阻止slapd接受未加密的请求?最后两个(使用任何可用的密码,但不允许任何密码)将是可以接受的。
是否需要其他设置/参数?
请注意,我们尝试了给定这里的建议(如上文所述),但这没有起作用。
发布于 2017-03-03 20:56:01
停止使用slapd.conf,但这只是一般性的建议。大多数(如果不是全部的话)来自olc*的slapd-config指令都可以作为slapd.conf样式配置的非olc指令使用。
对于security,一些关于security tls=1顺序的内容应该足够了,除非您也做了非TLS SASL。
您对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)。它通常不被使用。
发布于 2017-03-23 08:05:44
如果您必须继续使用slapd.conf,那么这条线将得到所需的答案:
由于兼容性原因,man slapd.conf TLSVerifyClient
<level>demand | hard | true中的这些关键字都是等价的。请求客户端证书。如果没有提供证书,或者提供了错误的证书,则会话将立即终止。
在密码选择方面,Zytrax火箭科学家的LDAP提供了一些提示:
# Cipher-list contains only RSA based
# authentication and key-exchange suites
# supported by TLSv1 (and SSLv3)
TLS_CIPHER_SUITE TLSv1+RSA
# Cipher-list contains only RSA based
# authentication and key-exchange suites
# supported by TLSv1 (and SSLv3)
# excludes EXPORT and NULL suites
TLS_CIPHER_SUITE TLSv1+RSA:!EXPORT:!NULL
# Ordered list of RSA based
# authentication and key-exchange suites
TLS_CIPHER_SUITE DES-CBC-SHA:DES-CBC3-SHA:RC4-SHA:RC4-MD5
# All ciphers excluding NULL
TLS_CIPHER_SUITE ALL:!NULL
# Default equivalent value if not defined
TLS_CIPHER_SUITE ALL您需要将TLS_CIPHER_SUITE更改为TLSCipherSuite,我怀疑您可能希望检查哪些密码名可以工作(从行政指南):
除了单独的密码名,说明符--高、中、低、导出和EXPORT40 --以及TLSv1、SSLv3和SSLv2可能会有所帮助。要获取GnuTLS中的密码列表,请使用:
gnutls-cli -l
https://serverfault.com/questions/836084
复制相似问题