這兩天在玩 Google Drive 的 API,用的是 google_drive
這個 gem,但在 SSL 連線時,卻出現了這樣的 error:
2.2.1 :027 > auth = client.authorization.fetch_access_token! Faraday::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
照 rvm 自己的 faq: How to fix broken certificates in your operating system.,可以執行 rvm osx-ssl-certs update all
$ rvm osx-ssl-certs update all Updating certificates for /etc/openssl/cert.pem: Already up to date.
不過似乎沒有解決。後來查到 Fixing failing SSL-certificate verification with RVM/OSX Yosemite,發現是因為透過 rvm 安裝 binary 的 ruby,會造成 openssl 的一些連結錯誤,以致無法找到正確的 certificates,解決方法就是用原始碼重編 ruby,也就是加上 --disable-binary
參數。
$ rvm install 2.2 --disable-binary
重編的時間會比用 binary 安裝慢一些,然後有一些 gem 可能也要用 gem pristine
重編。不過這樣 SSLError 就解決了。