rubyでSSL接続時のエラーやhttpsの画像が保存できない時の対処法

                                        

open-uriなどでcertificate verify failedと怒られる

httpsのサイトにopen-uriなどで接続すると
“certificate verify failed”というエラーが表示されてしまうことがあります。

「証明書検証に失敗しました」ってことですね。

 

seleniumやnokogiriで画像を保存しようとすると空のファイルが保存される

selenium webdriverやnokogiriで画像を保存しようとすると以下のようになります。

取得元の画像のURLがhttpsだと画像データが取得できずに空のファイルのままになってしまいます。

 

証明書を取得して読み込む

“certificate verify failed”と怒られているので証明書を取得して保存しましょう。
証明書の保存先はpathの通っているディレクトリか実行ファイルと同じディレクトリが良いと思います。
今回は実行ファイルと同じディレクトリに保存しましょう。

http://curl.haxx.se/ca/cacert.pem

cacert.pemが保存できたら以下のようにコードを変更しましょう。

たった2行の追加で完了です。
cacert.pemがパスの通ったディレクトリにあるのであれば

この行は必要ありません。

どうですか?ちゃんといけましたね!
もしかしたら’open-ssl’は要らないかもしれません。試してみてくださいね。