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
以下を見て良さそうですが、現状ではエラーとなるので