AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 836084
Accepted
blockbax
blockbax
Asked: 2017-03-04 03:53:20 +0800 CST2017-03-04 03:53:20 +0800 CST 2017-03-04 03:53:20 +0800 CST

使用 GnuTLS 和 TLS=required 配置 OpenLDAP

  • 772

我们有一个 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 接受未加密的请求?最后两个(使用任何可用的密码,但不允许没有密码)是可以接受的。

是否需要额外的设置/参数?

请注意,我们尝试了此处给出的建议(如上所述),但没有奏效。

ldap openldap starttls gnutls
  • 2 2 个回答
  • 3038 Views

2 个回答

  • Voted
  1. Best Answer
    84104
    2017-03-04T12:56:01+08:002017-03-04T12:56:01+08:00

    停止使用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)。它通常不使用。

    • 1
  2. iwaseatenbyagrue
    2017-03-24T00:05:44+08:002017-03-24T00:05:44+08:00

    如果您必须继续使用 slapd.conf,那么此线程包含您需要的答案:

    来自 man slapd.conf

    TLS验证客户端 <level>

    demand | hard | true

    出于兼容性原因,这些关键字都是等效的。请求客户端证书。如果没有提供证书,或者提供了错误的证书,则会话立即终止。

    在密码选择方面,Zytrax 的 LDAP for Rocket Scientists提供了一些提示:

    # 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,我怀疑您可能想检查哪些密码名称可以使用(来自admin guide):

    除了单独的密码名称之外,说明符 HIGH、MEDIUM、LOW、EXPORT 和 EXPORT40 以及 TLSv1、SSLv3 和 SSLv2 可能会有所帮助。

    要获取 GnuTLS 中的密码列表,请使用:

       `gnutls-cli -l`
    
    • 0

相关问题

  • Cygwin sshd 和 LDAP 身份验证

  • 从 OpenLDAP 检索操作属性

  • 为 Mac 网络使用 Linux 和 Open LDAP

  • 使用LDAP服务器身份验证的Linux中单个用户的多个登录名

  • 使用 smbldap 管理用户/组的 Web 前端

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve