我正在使用https://github.com/ruby-ldap/ruby-net-ldap (net-ldap) gem 来验证我的 rails 应用程序中用户的真实性。但在将数据传递给 ldap 服务器之前,我需要验证我正在与同一个安全服务器通信。是否有一种解决方法可以让我在 ruby 中验证证书
其他详细信息:(我尝试过的事情)
传给我的证书和我跑步时看到的一样
openssl s_client -showcerts -connect "<host>:<port>" </dev/null 2>/dev/null|openssl x509 -outform PEM
我使用http://www.ldapsoft.com/连接到客户端的服务器 除非我在Security > Manage server certificate添加给我的证书文件,否则我会收到一条警告说未知安全证书
我尝试先在普通红宝石中手动进行(没有宝石)但我收到以下错误
test-ssl.rb:23:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
代码:
cert_store = OpenSSL::X509::Store.new cert_store.add_file "server-wildcard.crt" io = TCPSocket.new("SECURELDAP.MYSITE.EDU","636") ctx = OpenSSL::SSL::SSLContext.new #ctx.cert = OpenSSL::X509::Certificate.new(File.read("server-wildcard.crt")) #ctx.client_ca = OpenSSL::X509::Certificate.new(File.read("server-wildcard.crt")) #ctx.ca_file = "server-wildcard.crt" #ctx.ca_path = "./" ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT ctx.cert_store = cert_store conn = OpenSSL::SSL::SSLSocket.new(io, ctx) conn.connect