在Redmine上使用starttls的LDAP

时间:2018-10-13 07:23:58

标签: ldap redmine starttls

Redmine默认不使用StartTLS。当我将LDAP服务器配置为要求TLS时,redmine无法验证用户身份。

使用openldap,您可能会在Redmine日志中看到“机密要求”错误消息。

2 个答案:

答案 0 :(得分:0)

确保未启用LDAPS。 ldaps://是与StartTLS不同的加密方案。使用StartTLS,未加密的连接将升级为通过同一端口进行加密。

使用redmine 3.2.4时,请找到名称为redmine / app / models / auth_source_ldap.rb的文件

搜索“加密”,找到:

 options = { :host => self.host,
            :port => self.port,
            :encryption => (self.tls ? :simple_tls : nil)
          }

取消选中LDAPS时,我们要使用StartTLS:

:encryption => (self.tls ? :simple_tls : :start_tls)

保存并重新启动Web服务器。 Redmine现在应该使用加密连接。

答案 1 :(得分:0)

我知道这是旧的,但我在 Redmine 4.1.2 上遇到了类似的问题。

为了让 StartTLS 在没有 LDAPS 的情况下工作,我必须进行类似的更改:

在 redmine/app/models/auth_source_ldap.rb 中

搜索这段代码

if tls
      options[:encryption] = {
        :method => :simple_tls,
        # Always provide non-empty tls_options, to make sure, that all
        # OpenSSL::SSL::SSLContext::DEFAULT_PARAMS as well as the default cert
        # store are used.
        :tls_options => { :verify_mode => verify_peer? ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE }
      }

并使用 else 子句将其更新为:

if tls
      options[:encryption] = {
        :method => :simple_tls,
        # Always provide non-empty tls_options, to make sure, that all
        # OpenSSL::SSL::SSLContext::DEFAULT_PARAMS as well as the default cert
        # store are used.
        :tls_options => { :verify_mode => verify_peer? ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE }
      }
    else
      options[:encryption] = {
        :method => :start_tls,
        :tls_options => { :verify_mode => OpenSSL::SSL::VERIFY_NONE}
      }
    end