我是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。
希望摆脱这种沮丧。
答案 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.