2014-04-22 2 views
9

Widziałem wiele odpowiedzi tutaj, ale żaden z nich nie pracował.SSL_connect syscall powrócił = 5 errno = 0 = stan SSLv2/v3 czytać serwera cześć A - Faradaya :: Error :: ConnectionFailed

Używam omniauth-oauth2 gem zintegrować z klientem trzeciej.

Używam faza konfiguracji opisane here ale ja zawsze otrzymuję ten błąd:

Authentication failure! failed_to_connect: Faraday::Error::ConnectionFailed, SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A 

Faraday::Error::ConnectionFailed (SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3  read server hello A): 
.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `connect' 
.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `block in connect' 

Moja initializer na config/initializers jest:

Rails.application.config.middleware.use OmniAuth::Builder do 
    client_id = 'my_client_id' 
    client_secret = 'secret' 

    ca_file = Rails.root.join('config', 'cacert.pem').to_s 

    ssl_options = {} 
    ssl_options[:ca_path] = '/usr/local/etc/openssl' 
    ssl_options[:ca_file] = ca_file 

    provider :my_partner_provider, client_id, client_secret, :client_options => {:ssl => ssl_options}, 
    setup: ->(env){ 
    req = Rack::Request.new(env) 
    site = "https://#{req.params.fetch('shop')}" 
    env['omniauth.strategy'].options[:client_options][:site] = site 
    } 
end 

Próbowałem zi bez SSL opcje.

celu uzupełnienia, oto mój stos: https://gist.github.com/cleytonmessias/11274209

mam wpisane w terminalu openssl s_client -showcerts -connect partnerurl.com:443 <<<OK i powrócił w ten sposób: https://gist.github.com/cleytonmessias/11288646

Czy ktoś zna rozwiązanie tego problemu?

+0

Czy znaleźliście jakieś rozwiązanie? –

+0

Powiedziałbym, że to błąd, ale prawdopodobnie nie pochodzi z Net :: HTTP. Miałem ten problem podczas łączenia się z usługami Sharepoint: wget również nie mógł się połączyć, podczas gdy curl nie miał żadnego problemu. – Michael

+0

Ale czy rozwiązałeś? Wciąż nic nie znalazłem. – Cleyton

Odpowiedz

4

mam w końcu znaleźć ostateczną odpowiedź:

Dzięki @mislav które dają wskazówkę do zmiany ssl version.

musiałem zmienić, ponieważ mój partner ma swoją aplikację zbudowaną przy użyciu ASP.NET i korzysta z tej wersji SSL. Więcej informacji na http://mislav.uniqpath.com/2013/07/ruby-openssl/

Więc ostateczny kod jest jak następuje:

Rails.application.config.middleware.use OmniAuth::Builder do 
    client_id = 'my_client_id' 
    client_secret = 'secret' 

    ssl_options = {} 
    ssl_options[:version] = :TLSv1 

    ssl = {} 
    ssl[:ssl] = ssl_options 

    provider :partner, client_id, client_secret, 
    client_options: { connection_opts: ssl} , 
    setup: ->(env){ 
    req = Rack::Request.new(env) 
    token_url = "https://#{req.params.fetch('shop')}" 
    env['omniauth.strategy'].options[:client_options][:token_url] = token_url 
    } 
end