【发布时间】:2018-10-13 07:23:57
【问题描述】:
Redmine 默认不使用 StartTLS。当我将 LDAP 服务器配置为需要 TLS 时,redmine 无法对用户进行身份验证。
使用 openldap,您可能会在 redmine 日志中看到“机密要求”错误消息。
【问题讨论】:
Redmine 默认不使用 StartTLS。当我将 LDAP 服务器配置为需要 TLS 时,redmine 无法对用户进行身份验证。
使用 openldap,您可能会在 redmine 日志中看到“机密要求”错误消息。
【问题讨论】:
确保未启用 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)
保存并重新启动您的网络服务器。 Redmine 现在应该使用加密连接。
【讨论】:
我知道这是旧的,但我只是遇到了类似的问题,但使用 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 }
}
并使用 an 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
【讨论】: