2017-06-29 6 views
1

プロダクションサーバの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 

答えて

0

verify_mode: OpenSSL::SSL::VERIFY_NONE 

使用:

verify_mode: "VERIFY_NONE" 

、あなたが設定されます。

関連する問題