gpt4 book ai didi

ruby - 如何告诉 Ruby Net/Ldap 忽略服务器证书主机名不匹配?

转载 作者:行者123 更新时间:2023-12-04 12:01:34 25 4
gpt4 key购买 nike

我正在设置一个测试环境,其中包含我们生产服务器的 VM 克隆。我在单个 IP 后面(在虚拟机管理程序上)拥有所有克隆并执行 NAT (Linux) 以访问测试环境中的服务。

我的测试实例 IP 上有一个 DNS 记录,名为“test.internal.com”。当我想在“测试”中联系 LDAP 服务器时,我可以发出 ldapsearch从命令行检索信息(成功OK)。

现在我想连接到测试实例来测试我的 Ruby 应用程序,但是当我连接时,Ruby 说:hostname "test.internal.com" does not match the server certificate (Net::LDAP::Error) .显然这是真的,因为我的 LDAP 服务器上的证书没有为 test.internal.com 配置。 .

我是否需要为我的 LDAP 服务器获取一个新证书,并使用 test.internal.com 的替代名称?或者有什么方法可以告诉Ruby忽略这个问题?我找到了 OpenSSL::SSL::VERIFY_NONEtls_options但它似乎不起作用。

#!/usr/bin/ruby

require 'net/ldap'
require 'io/console'
require 'highline/import'

ldapHost = 'test.internal.com'
ldapPort = '8389'
baseDn = "dc=internal,dc=com"

user = gets
username = "uid=" + user + ',ou=users,dc=internal,dc=com'
password = ask("Password: ") { |q| q.echo = "*" }

ldap_con = Net::LDAP.new ({ :host => ldapHost,
:port => ldapPort,
:base => baseDn,
:encryption => :start_tls, tls_options: { verify_mode: OpenSSL::SSL::VERIFY_NONE },
:auth => { :method => :simple, :username => username, :password => password }
})

op_filter = Net::LDAP::Filter.eq( "objectClass", "posixGroup" )

ldap_con.search( :base => baseDn, :filter => op_filter, :attributes=> 'dn') do |entry|
puts "DN: #{entry.dn}"
end

最佳答案

与文档相反,tls_options 不是连接对象的顶级参数,而是 encryption 的参数。 key :

ldap_con = Net::LDAP.new ({   :host => ldapHost,
:port => ldapPort,
:base => baseDn,
:encryption => {
:method => :start_tls,
:tls_options => { :verify_mode => OpenSSL::SSL::VERIFY_NONE }
},
:auth => { :method => :simple, :username => username, :password => password }
})

关于ruby - 如何告诉 Ruby Net/Ldap 忽略服务器证书主机名不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44831666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com