Problem
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `connect' from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `block in connect' from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:68:in `timeout' from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:99:in `timeout' from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `connect' from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:755:in `do_start' from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:750:in `start' from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/xmlrpc/client.rb:535:in `do_rpc' from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/xmlrpc/client.rb:420:in `call2' from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/xmlrpc/client.rb:410:in `call' from /path/infusionsoft/connection.rb:15:in `connection' from /path/infusionsoft/request.rb:29:in `request' from /path/infusionsoft/request.rb:5:in `get' from /path/infusionsoft/client/contact.rb:59:in `contact_find_by_email' from /path/infusionsoft.rb:18:in `method_missing' from (irb):2 from /path/rails/commands/console.rb:45:in `start' from /path/rails/commands/console.rb:8:in `start' from /path/rails/commands.rb:40:in `<top (required)>' from ./script/rails:6:in `require' from ./script/rails:6:in
Solution
To work this around, we need to overwrite use_ssl method:
module Net
class HTTP
def use_ssl=(flag)
flag = flag ? true : false
if started? and @use_ssl != flag
raise IOError, "use_ssl value changed, but session already started"
end
@use_ssl = flag
if @use_ssl
self.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
end
end
end