Twilio应用程序;twilio ruby(3.4.2),SSL错误
我遵循了上的示例代码,但它不起作用。在我的Rails控制台中,如下所示:Twilio应用程序;twilio ruby(3.4.2),SSL错误,ruby,twilio,Ruby,Twilio,我遵循了上的示例代码,但它不起作用。在我的Rails控制台中,如下所示: irb(main):039:0> require 'twilio-ruby' => nil irb(main):040:0* account_sid='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" irb(main):041:0> auth_token='yyyyyyyyyyyyyyyyyyyyyy
irb(main):039:0> require 'twilio-ruby'
=> nil
irb(main):040:0* account_sid='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
=> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
irb(main):041:0> auth_token='yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
=> "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
irb(main):042:0> client=Twilio::REST::Client.new account_sid, auth_token
=> <Twilio::REST::Client @account_sid=AC1322312300a752f6e84a8254535ecce5>
irb(main):043:0> client.account.sms.messages.create :from=>'16135551234', :to=>'16135551212', :body=>"Ada is fat"
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:678:in `connect'
from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:678:in `block in connect'
from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:44:in `timeout'
from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:87:in `timeout'
from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:678: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:1168:in `request'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/net_http_ext.rb:51:in `request'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/twilio-ruby-3.4.2/lib/twilio-ruby/rest/client.rb:214:in `connect_and_send'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/twilio-ruby-3.4.2/lib/twilio-ruby/rest/client.rb:138:in `block (2 levels) in <class:Client>'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/twilio-ruby-3.4.2/lib/twilio-ruby/rest/list_resource.rb:73:in `create'
from (irb):43
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.11/lib/rails/commands/console.rb:44:in `start'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.11/lib/rails/commands/console.rb:8:in `start'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.11/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'irb(main):044:0>
irb(main):039:0>需要“twilio ruby”
=>零
irb(主):040:0*帐户\u sid='XXXXXXXXXXXXXXXXXXXXXXXXXXXX'
=>“XXXXXXXXXXXXXXXXXXXXXXXXXXXX”
irb(主):041:0>auth_令牌='yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
=>“yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy”
irb(main):042:0>client=Twilio::REST::client.new account\u sid,auth\u令牌
=>
irb(main):043:0>client.account.sms.messages.create:from=>'16135551234',:to=>'1613555212',:body=>“Ada很胖”
OpenSSL::SSL::SSLError:SSL\u connect返回=1 errno=0 state=SSLv3读取服务器证书B:证书验证失败
来自C:/Ruby192/lib/ruby/1.9.1/net/http.rb:678:in'connect'
来自C:/Ruby192/lib/ruby/1.9.1/net/http.rb:678:in'block in connect'
来自C:/Ruby192/lib/ruby/1.9.1/timeout.rb:44:in'timeout'
from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:87:in'timeout'
来自C:/Ruby192/lib/ruby/1.9.1/net/http.rb:678:in'connect'
来自C:/Ruby192/lib/ruby/1.9.1/net/http.rb:637:in'do_start'
来自C:/Ruby192/lib/ruby/1.9.1/net/http.rb:626:in'start'
来自C:/Ruby192/lib/ruby/1.9.1/net/http.rb:1168:in'request'
来自C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/net_http_ext.rb:51:in“request”
来自C:/Ruby192/lib/ruby/gems/1.9.1/gems/twilio-ruby-3.4.2/lib/twilio-ruby/rest/client.rb:214:in'connect_and_send'
来自C:/Ruby192/lib/ruby/gems/1.9.1/gems/twilio-ruby-3.4.2/lib/twilio-ruby/rest/client.rb:138:in `块(2层)in'
来自C:/Ruby192/lib/ruby/gems/1.9.1/gems/twilio-ruby-3.4.2/lib/twilio-ruby/rest/list_resource.rb:73:in'create'
来自(irb):43
来自C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.11/lib/rails/commands/console.rb:44:in'start'
来自C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.11/lib/rails/commands/console.rb:8:in'start'
来自C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.11/lib/rails/commands.rb:23:in`'
来自脚本/rails:6:in'require'
从脚本/rails:6:in`'irb(main):044:0>
我还需要做什么才能让twilio ruby成功发送短信?我用这些号码和凭证打电话,所以它们很好
**编辑2011年12月24日***
我没有在我的电脑上运行此代码,而是将其部署到heroku.com。然后,我没有SSL错误,我能够拨打外呼。我很困惑 您可能缺少根证书文件。这通常是不必要的,但您可以尝试禁用证书验证,方法是在调用之前添加以下行:
require 'open-uri'
require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
您可能缺少根证书文件。这通常是不必要的,但您可以尝试禁用证书验证,方法是在调用之前添加以下行:
require 'open-uri'
require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
在从3.5.0开始的twilio ruby版本中,这应该不是问题。它现在“只是开箱即用” 在3.5.0之前的twilio ruby版本中,没有与gem打包的SSL CA证书捆绑包。因此,“修复”此问题的唯一方法是在初始化时将客户端指向证书包:
client = Twilio::REST::Client.new sid, token, :ssl_ca_file => '/path/to/file'
或者完全禁用SSL验证(不建议在生产中使用):
在从3.5.0开始的twilio ruby版本中,这应该不是问题。它现在“只是开箱即用” 在3.5.0之前的twilio ruby版本中,没有与gem打包的SSL CA证书捆绑包。因此,“修复”此问题的唯一方法是在初始化时将客户端指向证书包:
client = Twilio::REST::Client.new sid, token, :ssl_ca_file => '/path/to/file'
或者完全禁用SSL验证(不建议在生产中使用):
我试过这个,但我得到了完全相同的错误。我需要安装额外的gems,还是做一些其他的配置把戏?您可以通过将:SSL\u verify\u peer=>false作为参数传递给客户端构造函数来禁用SSL对等验证:Client=Twilio::REST::Client.new sid,token,:SSL\u verify\u peer=>false Andrew Benton。你的建议奏效了。如果你把它作为一个正确的答案发布,我会接受它。它可能会起作用,但禁用证书检查会使你容易受到中间人攻击。我想知道如何添加丢失的根证书文件。我尝试了这个,但我得到了完全相同的错误。我需要安装额外的gems,还是做一些其他的配置把戏?您可以通过将:SSL\u verify\u peer=>false作为参数传递给客户端构造函数来禁用SSL对等验证:Client=Twilio::REST::Client.new sid,token,:SSL\u verify\u peer=>false Andrew Benton。你的建议奏效了。如果你把它作为一个正确的答案发布,我会接受它。它可能会起作用,但禁用证书检查会使你容易受到中间人攻击。我想知道如何添加丢失的根证书文件。Heroku在正确的位置有正确的CA证书文件,ruby可以找到它们。Heroku在正确的位置有正确的CA证书文件,ruby可以找到它们。第二个让我在测试服务器(又称笔记本电脑)上运行twilio第二个让我开始在我的测试服务器(又称笔记本电脑)上运行twilio。