SSL错误 - 无法使用YT Gem访问对象的属性

时间:2016-03-25 22:38:57

标签: ruby-on-rails ruby ssl youtube rubygems

我是rails和ruby的新手。我正在尝试使用YT gem开发rails 4应用程序以显示和youtube视频。当我在rails App中访问Title时,我看到以下错误。

“对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手动访问详细信息。

我尝试从rails控制台显示以下错误。

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 revision 53160)[i386-mingw32]。仅供参考我能够在没有任何问题的情况下上传AWS文件,不确定这是否有助于SSL。

希望摆脱这种沮丧。

2 个答案:

答案 0 :(得分:0)

  

SSLv3读取服务器证书B:证书验证失败

可能是TLS与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 gems文档,但我没有看到设置任何SSL选项的方法。

答案 1 :(得分:0)

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

我有一个类似的问题,并使用rvm升级到Ruby 2.3.0并且工作正常

rvm install 2.3.0

但是,其他人提到他们通过更新cert文件来解决问题。来自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.