2011-03-30 6 views
0

도움이되지 않습니다 윈도우 문제에 대한 또 다른 OpenSSL이있다 :, 그것은 아주 짧은 VERIFY_NONE 내가 내 자신의 동영상을 업로드 좀 루비 스크립트를 만들려고 노력 그리고 여기에 전체 코드의하고

require 'openssl' 
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE # warning: already initialized constant VERIFY_PEER \n 0 
    require 'youtube_it' 
    require 'rest-client' 

    # Authentication 
    auth_devkey  = '...' 
    auth_user  = '...' 
    auth_pass  = '...' 

    # Getting auth token 
    response = RestClient.post "https://www.google.com/accounts/ClientLogin", {:Email => auth_user, :Passwd => auth_pass, :service => "youtube", :source => "..."}, :content_type => 'application/x-www-form-urlencoded' 
    auth_token = response[/(?<=auth=).*/i] 
    # so far so good 

    # creating a new youtube_it client 
    yt_client = YouTubeIt::Client.new(:username => auth_user, :password => auth_pass, :dev_key => auth_devkey) 
    # A-Okay 


    # Uploading video 
    vpath  = "c:/downloads/videos/video.mov" 
    upload_response = yt_client.video_upload(File.open(vpath), :title => "test",:description => 'some description', :category => 'People',:keywords => %w[cool blah test], :list => 'denied') 

    # big error here 
    OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 
      from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:677:in `connect' 
      from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:677:in `connect' 
      from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:637:in `do_start' 
      from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:626:in `start' 
      from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:1160:in `request' 
      from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-1.6.1/lib/restclient/net_http_ext.rb:17:in `request' 
      from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:970:in `post' 
      from C:/Ruby192/lib/ruby/gems/1.9.1/gems/youtube_it-1.4.1/lib/youtube_it/request/video_upload.rb:525:in `auth_token' 
      from C:/Ruby192/lib/ruby/gems/1.9.1/gems/youtube_it-1.4.1/lib/youtube_it/request/video_upload.rb:463:in `authorization_hea 
    ders' 
      from C:/Ruby192/lib/ruby/gems/1.9.1/gems/youtube_it-1.4.1/lib/youtube_it/request/video_upload.rb:94:in `upload' 
      from C:/Ruby192/lib/ruby/gems/1.9.1/gems/youtube_it-1.4.1/lib/youtube_it/client.rb:99:in `video_upload' 
      from (irb):81 
      from C:/Ruby192/bin/irb:12:in `<main>' 

나는 경우 확신 즉시 다른 정보를 제공 할 수 있으며 여기에 붙여 넣기가 어려울 수 있으며이를 해결하기 위해 필요합니다. 나는 적어도 4 시간 동안 인터넷 검색을하지 않고 가볍게 질문을하고 싶지 않지만 도움이되는 것을 찾을 수는 없다.

감사합니다 억!

답변

1

문제는이 작업을 수행 할 수 없다는 것입니다 : SSLContext의 인스턴스의 verify_mode 속성 :

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 

당신이를 수정해야합니다. 나머지 클라이언트 내부의 instance_variable_get을 통해 NET :: HTTP 객체의 인스턴스 변수를 가져 와서 다음과 같이 설정할 수 있습니다. verify_mode.

더 좋은 방법은 직접 설정하는 것입니다 : 나머지 클라이언트 자체의 속성 verify_ssl : 더 읽기

RestClient::Request.execute(:method => :post, :url => 'http://example.com', :verify_ssl => OpenSSL::SSL::VERIFY_NONE) 

내가 소스 코드에서이 오류가 있었다 here

+0

헤이 알로은 아무것도하기 전에, 덕분에 다시 쓰기 위해 - 나는 그 youtube_it 보석의 폴더로 가서 SSL의 디렉토리 전체 검색을했고 발견 한이 http.use_ssl = 사실 http.verify_mode =에는 OpenSSL :: SSL :: VERIFY_NONE 그리고 걱정 스럽습니다! 그러나 나는이 응용 프로그램을 heroku에 업로드 할 예정이며 보석을 설치하는 heroku는 보석을 수정할 수 없다는 것을 의미합니다. 그러면 어떻게해야합니까? 모두가 내가 Google에서 찾을 수있는 모든 게시물에서 인증을 종료하려는 경우 왜이 SSL 문제로 귀찮게합니까? –

+1

gem 자체를 수정하지 마십시오. 나머지 클라이언트가 코드에서 값을 수정하는 방법을 찾으십시오. 모두가 게으르며 정확한 방식으로 구현하고 싶지 않기 때문에 모든 사람이 확인을 종료합니다. 인증서는 항상 확인되어야합니다. 확인하지 않고 ssl은 운전 면허증의 사진 복사와 같습니다 : 원래 정보와 동일한 정보이지만 전혀 가치가 없습니다 ... :) – ALoR

+0

알 수 있습니다. 나는 그것을 시도 할 것이다. SSL 인증서를 설정하는 방법에 대한 유용한 자습서 링크가 없을 가능성은 없습니까? 키워드에 대한 제안은 Google에서이 키워드가 매우 광범위한 원거리 주제라고 의심스럽게 생각할 때 매우 유용 할 것입니다. 감사합니다. 감사합니다. –