Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
38
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@whiteleaf

Windows上のRubyでSSL接続時にcertificate verify failedが出る場合の対処

Ruby をアップデートしろ!

……ができない場合。

Windows上のRubyにおいて、

require "open-uri"
open("https://www.google.com").read

などとやった場合に

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate
verify failed (OpenSSL::SSL::SSLError)

とエラーがでて接続できない場合の対処について書いておきます。

  1. 証明書をダウンロードする。
    http://curl.haxx.se/ca/cacert.pem
  2. 環境変数 SSL_CERT_FILE に cacert.pem のパスを設定する
    set SSL_CERT_FILE=./cacert.pem
    もしくはスクリプトの先頭付近に
    ENV["SSL_CERT_FILE"] = "./cacert.pem"
    (Windows のシステム設定から環境変数を設定する場合などは証明書ファイルのフルパスを設定する必要があるでしょう)

終わり。

試験環境

  • RubyInstaller
  • ruby 2.2.3p173 (2015-08-18 revision 51636) [i386-mingw32]

Windows以外の環境でも証明書が古くなれば出ることがある(macOS で確認)。
その場合でも同様に環境変数 SSL_CERT_FILE に証明書へパスを通してやれば良い。


2016/12/06 追記

https://rubygems.org/ の証明書が更新された影響で、Gemのインストール関連でSSLのエラーが出る場合は、

gem install rubygems-update --source http://rubygems.org/
update_rubygems

とコマンドを発行することでも解決する。

(この記事の本題ではないが。gem コマンドは自分自身で証明書を持っていて、それを更新する方法のため)

38
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
38
Help us understand the problem. What is going on with this article?