LoginSignup
183

More than 5 years have passed since last update.

homebrew で入れた openssl を使って Ruby をコンパイルすると SSL 利用時に証明書エラーが発生する場合の対応

Last updated at Posted at 2013-02-19

さて、皆さん割と homebrew で openssl 入れて brew link しちゃってる人も多いと思います。そんな環境でその openssl を使って Ruby をコンパイルすると、OpenSSL 利用時に証明書エラーが発生します。

$ pry
[1] pry(main)> require 'open-uri'
=> true
[2] pry(main)> open('https://www.google.com/').read
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
from ~/.rbenv/versions/2.0.0-rc2/lib/ruby/2.0.0/net/http.rb:917:in `connect'

エラーをぐぐると山ほど出てきます。ただ大抵書かれてる対応方法が

$ ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"
"/usr/local/etc/openssl/cert.pem"

して出てくる標準証明書のパスに

$ wget -O /usr/local/etc/openssl/cert.pem http://curl.haxx.se/ca/cacert.pem

で対応してね、という方法でいささか気持ちが悪かったのでちょっと調べました。

curl.haxx.se って?

cURL のサイトです。

に詳しく書いてありますが、curl のサイト上で配布してる cacert.pem は、Mozilla で利用している証明書です。

(しかしハッシュ値も表示されて無くて https でもないので、いささかこの証明書を突っ込むの不安ですね…)

homebrew から証明書を入れる

同等の証明書は curl-ca-bundle という formula で提供されているので、

$ brew install curl-ca-bundle
$ brew list curl-ca-bundle
/usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt
$ cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem

することで、証明書を設置でき、SSL でのエラーは発生しません。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
183