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

開発 hironemuhironemu

RVM を使ってRubyを実行していた環境で以下のようなエラーが出ました。

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

ぐぐってみると証明書の検証がうまくいっていないらしいです。

以下のコマンドで使用しているCA証明書の場所を調べられるそうです。

$ bundle exec pry
[1] pry(main)> OpenSSL::X509::DEFAULT_CERT_FILE
=> "/usr/local/etc/openssl/cert.pem"

rvm にはこのファイルを更新するコマンドもあるらしいので以下のコマンドで確認&更新してみます。

$ rvm osx-ssl-certs status all
Certificates for /etc/openssl/cert.pem: Up to date.
Certificates for /usr/local/etc/openssl/cert.pem: Up to date.
$ rvm osx-ssl-certs update all

(2箇所のファイルとも Up to date となってるのは、update した後に、もう一度実行したためなので、あまり気にしないでください・・・。)

しかし、まだ同じエラーがでてしまうので、以下の cacert.pem をダウンロードしてきて、これをコピーして、再度確認したところうまくいきました。

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

rvm osx-ssl-certs がどこからCA証明書を持っているのかまでは追ってないですが、一時的な問題ですかね・・・。ちなみに、アクセス先のSSLはRapidSSLの証明書でした。

Tags: