Feb 26th, 2013

ruby 2.0 + bundle 1.3.0 で bundle install の際のSSLエラーの解決

brewでopensslをインストールし、ruby 2.0をインストールした環境での解決方法が分かったのでメモとして。 brewでopensslをインストールしておらずruby-buildでインストールした場合にはおそらく該当しません。

前提として

以下のca-bundle-crtはインストールされているものとします。

$ brew install curl-ca-bundle

解決方法

$ ln -s /usr/local/share/ca-bundle.crt /usr/local/etc/openssl/certs/cert.pem
$ export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem

もしくは

$ ln -s /usr/local/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem

説明

ca-bundle.crt/usr/local/etc/openssl/ssl/cert.pem に配置する事で gem installの際などの場合は解決できるのですが、bundle installの際にはこの設置場所だと見てくれずエラーになります。 そこでlibcrypto.aにハードコードされている情報を確認します。

$ strings /usr/local/lib/libcrypto.a|grep -B3 SSL_CERT_FILE
/usr/local/etc/openssl/certs
/usr/local/etc/openssl/cert.pem
SSL_CERT_DIR
SSL_CERT_FILE

となっており、環境変数SSL_CERT_FILEを設定するか/usr/local/etc/openssl/cert.pemに配置することで回避できる事が分かります。

※SSLCERTDIRの/usr/local/etc/certs以下を見て良さそうですが、現状ではエラーとなるので