Я использую gemon https://github.com/ruby-ldap/ruby-net-ldap (net-ldap) для проверки подлинности пользователя в приложении rails. Но перед передачей данных на сервер ldap мне нужно проверить, что я говорю с одним и тем же безопасным сервером. Есть обходной путь, который позволяет мне проверить сертификат в рубинRuby проверить сертификат безопасного ldap-сервера
Дополнительные данные: (вещи, которые я пробовал)
Сертификат, который передается на меня же, как я вижу, когда Я бег
openssl s_client -showcerts -connect "<host>:<port>" </dev/null 2>/dev/null|openssl x509 -outform PEM
Я использовал http://www.ldapsoft.com/ для подключения к серверу клиента Если не добавить файл сертификат, данный мне в безопасности> Управление сервера Certific Атес, я получаю предупреждение о том, неизвестный сертификат Security
Я попытался сделать это вручную первым в простом рубина (без драгоценных камней) Но я получаю следующее сообщение об ошибке
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
Я встретил ту же проблему с и –
https://gist.github.com/mintuhouse/9931865 Я отправил обходной путь, который работал для меня здесь. Проводка, если вам все еще нужно – mintuhouse