Доступ к Litmus API приводит к ошибке SSL. Любой способ решить это?

Резюме: Когда я подключаюсь к Litmus через гем, я получаю следующую ошибку:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: tlsv1 unrecognized name

Доступ к API через curl с теми же учетными данными работает нормально.

Я нашел это решение для похожей ошибки: SSL_connect SYSCALL вернул =5 errno=0 состояние = сервер чтения SSLv2/v3 привет A - Faraday::Error::ConnectionFailed

Который рекомендует изменить параметры SSL в oauth:

ssl_options[:version] = :TLSv1

Есть ли способ установить параметры ssl для Litmus? Есть ли другой возможный обходной путь?

Вот полный след:

2.0.0-p247 :002 > Litmus::Base.new("xxx.litmus.com", "[email protected]", "zzz", true)
 => #<Litmus::Base:0x007fad4a66dc68> 
2.0.0-p247 :003 > Litmus::EmailTest.list
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: tlsv1 unrecognized name
  from /Users/andrei/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `connect'
  from /Users/andrei/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `block in connect'
  from /Users/andrei/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/timeout.rb:52:in `timeout'
  from /Users/andrei/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `connect'
  from /Users/andrei/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
  from /Users/andrei/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:851:in `start'
  from /Users/andrei/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:1367:in `request'
  from /Users/andrei/.rvm/gems/ruby-2.0.0-p247/gems/httparty-0.13.1/lib/httparty/request.rb:93:in `perform'
  from /Users/andrei/.rvm/gems/ruby-2.0.0-p247/gems/httparty-0.13.1/lib/httparty.rb:521:in `perform_request'
  from /Users/andrei/.rvm/gems/ruby-2.0.0-p247/gems/httparty-0.13.1/lib/httparty.rb:457:in `get'
  from /Users/andrei/.rvm/gems/ruby-2.0.0-p247/gems/litmus-0.3.0/lib/litmus/test.rb:4:in `list'
  from /Users/andrei/.rvm/gems/ruby-2.0.0-p247/gems/litmus-0.3.0/lib/litmus/email_test.rb:4:in `list'
  from (irb):3
  from /Users/andrei/.rvm/rubies/ruby-2.0.0-p247/bin/irb:16:in `<main>'

1 ответ

Я думаю, вам нужно пропатчить метод initialize base.rb для принятия параметра версии ssl, а затем добавить что-то вроде этого в метод:

def initialize(company, username, password, ssl = false, ssl_version)
  protocol = ssl ? 'https' : 'http'
  self.class.base_uri "#{protocol}://#{company}.litmus.com"
  self.class.basic_auth(username, password)
  self.class.ssl_version = ssl_version # <=
end

Тогда назовите это как:

Litmus::Base.new("xxx.litmus.com", "[email protected]", "zzz", true, :TLSv1)

Надеюсь, это поможет, я заметил, что вы опубликовали вопрос на ту же тему в их репозитории на Github. Возможно, вы можете разветвляться и создать запрос на извлечение.

Другие вопросы по тегам