2016-03-25 36 views
1

我是rails和ruby的新手。我正在嘗試開發帶YT gem的rails 4應用以顯示和YouTube視頻。當我在Rails應用中訪問Title時,發現以下錯誤。SSL錯誤 - 無法使用YT訪問對象的屬性

「對YouTube API的請求導致了意外的服務器錯誤:您可以通過運行以下命令手動重試同一請求:curl -X GET -H」content-length:0「-H」user-agent:Yt: :請求(gzip)「」https://www.googleapis.com/youtube/v3/videos?id=bx5BUbiIXFw&key=AIzaSyCy7EGFIu9gFaWOlRGswoCugEi_20hB3js&part=snippet「」

我可以通過給定的URL手動訪問詳細信息。

我試過從軌道控制檯它顯示以下錯誤。

Video.new url: "https://www.youtube.com/watch?v=bx5BUbiIXFw" 

irb(main):006:0> video.title 

Yt::Errors::ServerError: {"request_curl":"curl -X GET -H \"content-length: 0\" - 
H \"user-agent: Yt::Request (gzip)\" \"https://www.googleapis.com/youtube/v3/vid 
eos?id=bx5BUbiIXFw\u0026key=AIzaSyCpLai69UE3yYSRZKnFrwKkNJ6OIP2SfSI\u0026part=sn 
ippet\"","response_body":"#\u003cOpenSSL::SSL::SSLError: SSL_connect returned=1 
errno=0 state=SSLv3 read server certificate B: certificate verify failed\u003e"} 

我已經更新了Windows的SSL證書。使用Rails v 4.1.8,ruby 2.1.8p440(2015-12-16修訂版53160)[i386-mingw32]。僅供參考我可以上傳AWS文件,但不能確定是否有助於SSL。

希望能從這種挫折中走出來。

+0

你有沒有找到解決這個問題的辦法?我遇到了同樣的問題。 – mike0416

回答

0

SSLv3 read server certificate B: certificate verify failed

可以是TLS VS SSL的問題。 Ruby可能試圖與SSLv3連接。 SSLv3 is insecure

當您使用--sslv3選項運行上述curl命令時,或者在使用和不使用:TLSv1_2集合時執行以下代碼時,會發生什麼情況?

con = Net::HTTP.new(host, 443) 
    con.use_ssl = true 
    con.ssl_version = :TLSv1_2 
    con.get path { |r| ... } 

我快速查看了YT寶石文檔,但沒有看到設置SSL選項的方法。

0

https://github.com/google/google-api-ruby-client/issues/253

我也有類似的問題,使用RVM升級到2.3.0紅寶石,並通過更新他們的cert文件工作得很好

rvm install 2.3.0 

然而,其他人都提到,他們有一種變通方法。來自dblommesteijn:

System wide solution would be this (for Yosemite and Ruby 2.2.1): 

Downloading this http://curl.haxx.se/ca/cacert.pem, and saving it replacing /usr/local/etc/openssl/cert.pem. 
Add export SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem to your .bash_profile. 
All net::http will pickup on ENV['SSL_CERT_FILE']. 

RVM and ruby seems to have an outdated CA cert. 
相關問題