rubyでSSL利用時に証明書エラーが発生する場合の対応

エラー発生

コマンドラインからtwitter投稿が出来るrubygemのtwを使ってみようと思ったら、起動時にSSL証明書でエラーが発生。

/Users/hoge/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (Twitter::Error::ClientError)

対応策

対応策としては、証明書のパスを確認し、

$ 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

brweで証明書をインストール

brewを使っても証明書をインストールする事が出来ます。

$ 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

cpもしくはln -sで先ほど確認した証明書のパスに置いてあげましょう。