Skip to content

Instantly share code, notes, and snippets.

@mislav
Created April 23, 2011 02:28
Show Gist options
  • Select an option

  • Save mislav/938183 to your computer and use it in GitHub Desktop.

Select an option

Save mislav/938183 to your computer and use it in GitHub Desktop.
Faraday SSL example
connection = Faraday::Connection.new('http://example.com') do |builder|
builder.request :url_encoded # for POST/PUT params
builder.adapter :net_http
end
# same as above, short form:
connection = Faraday.new 'http://example.com'
# GET
connection.get '/posts'
# POST payload
payload = {:title => 'Example'}
connection.post '/posts', payload
# now again, over SSL
# verify_mode is automatically set to OpenSSL::SSL::VERIFY_PEER
connection = Faraday.new 'https://example.com'
# turn off SSL
# (no use-case for this, really)
connection = Faraday.new 'https://example.com', :ssl => false
# turn off peer verification
connection = Faraday.new 'https://example.com', :ssl => {:verify => false}
# other SSL options
connection = Faraday.new 'https://example.com', :ssl => {
:client_cert => ...,
:client_key => ...,
:ca_file => ...,
:ca_path => ...,
:cert_store => ...
}
@veloper

veloper commented Nov 5, 2013

Copy link
Copy Markdown

Thanks, this gist rocks! (Found via google search)

@schnittchen

Copy link
Copy Markdown

I could not get the :ca_path option to work. So sad.

@pboling

pboling commented Jan 9, 2014

Copy link
Copy Markdown

I can't get the :ssl => {:verify => false} option to work with the net/http adapter. A google makes it seem like lots of people are in the same boat :(

@strotter

Copy link
Copy Markdown

Re: :verify => false, I was able to get around this by requiring 'openssl' and then:

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

Probably not the best option, but helps.

@zekefast

Copy link
Copy Markdown

For those who can not get work some options, please, ensure that you pass Symbol keys. String keys does not works. You also could use ::Hashie::Mash to avoid bothering with difference in keys (symbolize keys from ActiveSupport should work as well).

@twilliamsark

Copy link
Copy Markdown

Newbe question. Does it support TLS?

@tamersalama

Copy link
Copy Markdown

Thank you @zekefast - it indeed needed symbolized keys. If you're in rails - don't forget you could use deep_symbolize_keys

@EdwinRozario

Copy link
Copy Markdown

I wanted to set TLS 1.2 as the networking protocol with Faraday. So i did Faraday.new(url: uid, ssl: {version: :TLSv1_2}). It works but I am not sure if this is the right configuration. Because i cant break it with Faraday.new(url: uid, ssl: {version: :TLSv10_11}).

Can someone help with the right options for ssl version.

@crystalneth

Copy link
Copy Markdown

The documentation on this is all wrong. Here's how to do it. This might also work at the request level.

conn = Faraday.new do |faraday|
    faraday.ssl.verify = false
end

@metaskills

Copy link
Copy Markdown

I had to use the following format for a gem that is both Faraday 0.8 and 0.9 tested.

Faraday.new do |faraday|
  faraday.ssl[:verify] = false
end

@mcr

mcr commented May 20, 2019

Copy link
Copy Markdown

Many posts seem to think that turning off verification is a good thing, and you are struggling to do it correctly.
Might as well just now use SSL at all if you do that.
The right answer is probably that you need to set up the ca_path so that the server can be validated correctly. See for instance, https://github.com/lostisland/faraday/wiki/Setting-up-SSL-certificates

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment