コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Faraday(にてNet::HTTPを使う場合)で証明書検証をスキップする

2日連続Faradayネタ

環境

faraday (0.15.4)

考え方

FaradayではHTTP接続のadapterが指定できるので、そちらで Net::HTTP を使えばSSLの認証モードとして証明書検証が失敗しても続ける指定ができるのでそちらを使う

やり方

Faraday.new do |faraday|
  faraday.adapter :net_http do |http|
    # Adminは内部のネットワークのため、認証局がない証明書を使う。
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end
end

という形で指定することができる。ちなみに OpenSSL::SSL::VERIFY_NONE を指定すると挙動は以下のようになる

クライアントモード: サーバから受け取った証明書は検証されますが、失敗しても ハンドシェイクは継続します。 ハンドシェイクの結果は OpenSSL::SSL::SSLSocket#verify_result で 取得できます。

このフラグは単独で用いられるべきです。 - constant OpenSSL::SSL::VERIFY_NONE (Ruby 2.6.0)

参考リンク