プロダクションサーバのVMクローンで構成されるテスト環境を設定しています。私は、テスト環境でサービスにアクセスするために、単一のIPの背後にあるすべてのクローンを(ハイパーバイザ上で)、NATを実行しています(Linux)。Ruby Net/Ldapにサーバー証明書のホスト名の不一致を無視する方法を教えてください。
「test.internal.com」という名前のテストインスタンスIPにDNSレコードがあります。 'testing'でLDAPサーバーに連絡したい場合は、コマンドラインからldapsearch
を発行して情報を取得できます(これは正常に実行されます)。
私はRubyアプリケーションをテストするためにテストインスタンスに接続したいと思いますが、接続するとRubyはhostname "test.internal.com" does not match the server certificate (Net::LDAP::Error)
と表示されます。 LDAPサーバーの証明書がtest.internal.com
に設定されていないため、これは当てはまります。
test.internal.com
の別名でLDAPサーバの新しい証明書を取得する必要がありますか、またはRubyに問題を無視するように指示する方法はありますか?私はtls_options
のためにOpenSSL::SSL::VERIFY_NONE
を見つけましたが、動作していないようです。代わりに使用したの
#!/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