Google::Apis::ServerError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 сървър за четене здравей A

Не мога да разбера какъв е проблемът тук. Имам приложение Rails / ActiveAdmin, за което настройвам задача. Задачата е обвита в задача за релси.

upload.rb

require 'google/apis/drive_v3'
require 'googleauth'
require 'googleauth/stores/file_token_store'
require 'certified'
require 'fileutils'

OOB_URI = 'urn:ietf:wg:oauth:2.0:oob'
APPLICATION_NAME = 'Google Sync'
CLIENT_SECRETS_PATH = 'client_secret.json'
CREDENTIALS_PATH = File.join(Dir.home, '.credentials', "app-sync.yaml")
SCOPE = Google::Apis::DriveV3::AUTH_DRIVE_FILE

##
## Ensure valid credentials, either by restoring from the saved credentials
## files or intitiating an OAuth2 authorization. If authorization is required,
## the user's default browser will be launched to approve the request.
##
## @return [Google::Auth::UserRefreshCredentials] OAuth2 credentials
def authorize
  FileUtils.mkdir_p(File.dirname(CREDENTIALS_PATH))

  client_id = Google::Auth::ClientId.from_file(CLIENT_SECRETS_PATH)
  token_store = Google::Auth::Stores::FileTokenStore.new(file: CREDENTIALS_PATH)
  authorizer = Google::Auth::UserAuthorizer.new(
    client_id, SCOPE, token_store)
  user_id = 'default'
  credentials = authorizer.get_credentials(user_id)
  if credentials.nil?
    url = authorizer.get_authorization_url(
      base_url: OOB_URI)
    puts "Open the following URL in the browser and enter the " +
         "resulting code after authorization"
    puts url
    code = gets
    credentials = authorizer.get_and_store_credentials_from_code(
      user_id: user_id, code: code, base_url: OOB_URI)
  end
  credentials
end

# Initialize the API
Drive = Google::Apis::DriveV3 # Alias the module
drive = Drive::DriveService.new

drive.client_options.application_name = APPLICATION_NAME
drive.authorization = authorize

# Upload a file
# Instead of passing a name for a file on the file system, create a pseudo file from a string
file_contents = StringIO.new(<<FILE_CONTENTS)
Field1,Field2,Field3
Some,Useless,Data
More,Useless,Info
FILE_CONTENTS

parent_folder_id = 'abcde...'
new_file = Drive::File.new(name: 'Test Upload CSV', parents: [parent_folder_id])
new_file = drive.create_file(new_file, upload_source: file_contents, content_type: 'text/csv')

puts "File '#{new_file.name}' created with id '#{new_file.id}'. Folder Location: https://drive.google.com/drive/folders/#{parent_folder_id}"

горният код ще качи прост тестов файл съвсем добре, когато се изпълнява с ruby upload.rb

обаче, когато обвия това в рейк задача и стартирам rake google_test, тя връща следните грешки

rake aborted!
Google::Apis::ServerError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A
C:/Users/Brian/Path/To/App/lib/tasks/member_status_tasks.rake:122:in `block (2 levels) in <top (required)>'
Faraday::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A
C:/Users/Path/To/App/lib/tasks/member_status_tasks.rake:122:in `block (2 levels) in <top (required)>'
OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A
C:/Users/Path/To/App/lib/tasks/member_status_tasks.rake:122:in `block (2 levels) in <top (required)>'
Tasks: TOP => reps_exports:member_status
(See full trace by running task with --trace)

редът, който също препраща, е new_file = drive.create_file(new_file, upload_source: file_contents, content_type: 'text/csv')

Някой знае ли защо това работи добре, когато се изпълнява като страничен скрипт, но веднъж добавен към проекта като рейк задача, той се проваля, казвайки, че сървърът не приема SSL версията? Дори се опитах да посоча TLSv1_2 и пак ще излезе грешка с returned=5

Текущата инсталирана версия на openssl е 1.0.1j с Ruby 2.3.1 и Rails 5.0.0.1, на платформа Windows


person Bot    schedule 28.11.2016    source източник
comment
когато видях тази грешка последния път, моята настройка на ssl беше повредена. Използвах github.com/mislav/ssl-tools, за да проследя какво не е наред.   -  person Sascha Kaestle    schedule 28.11.2016
comment
според github.com/mislav/ssl-tools/issues/3 инструментът няма да ми помогне.   -  person Bot    schedule 29.11.2016
comment
Имах подобна грешка, когато трябваше да надстроя версиите на openssl на ruby ​​2.3.0 и Ubuntu 14.04   -  person BigRon    schedule 01.12.2016
comment
@BigRon на коя версия на openssl бяхте и коя също надстроихте? Изглежда, че може би е нещо с проекта, тъй като се отваря добре, преди да го добавя към приложението rails и просто да стартирам скрипта сам.   -  person Bot    schedule 01.12.2016
comment
Най-новата версия на мениджъра на пакети на Ubuntu е 1.0.1f, но е пренесена към нови версии на openssl. Не съм сигурен как се работи с това в Windows система. Вярвам, че ако сами компилирате openssl, трябва да имате openssl 1.1.0c, който покрива най-новата грешка в сигурността   -  person BigRon    schedule 01.12.2016
comment
и ако се придържате към 1.0.1, трябва да стигнете до 1.0.1u   -  person BigRon    schedule 01.12.2016
comment
Имахте ли късмет с това?   -  person BigRon    schedule 05.12.2016
comment
@BigRon Не съм.   -  person Bot    schedule 05.12.2016


Отговори (1)


Това може да е свързано с версията на Ruby, която използвате.

Вижте това за повече информация: https://stackoverflow.com/a/33311685/777425

person samdunne    schedule 30.11.2016
comment
Според етикетите съм на ruby ​​2.3.1 и openssl 1.0.1j - person Bot; 30.11.2016
comment
Извинения, етикетите не бяха там, когато публикувах това. - person samdunne; 06.12.2016