igaiga diary(2013-06-17)
自分はCygwin使いなので,次のようにしました.
まず証明書ファイルを,ホームの下に置きます.直下は美しくない*1ので…
$ mkdir ~/.ssl_cert
$ curl -o ~/.ssl_cert/cacert.pem http://curl.haxx.se/ca/cacert.pem
次は,.zshrcの編集です.環境変数SSL_CERT_FILEのことを書いておきます.
export SSL_CERT_FILE=$HOME/.ssl_cert/cacert.pem if [ ! -f $SSL_CERT_FILE ] then unset SSL_CERT_FILE fi
シェルを立ち上げ直して,動作確認…
$ echo $SSL_CERT_FILE
/home/takehikom/.ssl_cert/cacert.pem
$ pry
[1] pry(main)> require 'open-uri'
=> true
[2] pry(main)> open('https://www.google.co.jp')
=> #
アクセスできました.
SSL_CERT_FILEをなくすと…
$ unset SSL_CERT_FILE
$ pry
[1] pry(main)> require 'open-uri'
=> true
[2] pry(main)> open('https://www.google.co.jp')
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
from /(略)/ruby/lib/ruby/2.1.0/net/http.rb:919:in `connect'
期待どおり,エラーが出ました*2.
対話型だけでなく,きちんとスクリプトに書いたものも,見直しておきましょう.
ですが,OAuth認証のほうを使って,手元で動かしたところ,エラーが発生しました.「OpenSSL::SSL::VERIFY_PEER」を「OpenSSL::SSL::VERIFY_NONE」に書き換えると,うまく動作するようになりました.
goo.glの短縮URLはRubyスクリプトからcurlコマンドへ
「OpenSSL::SSL::VERIFY_PEER」に戻してみます.
SSL_CERT_FILEのあるとき〜*3は,短縮URLが得られ,SSL_CERT_FILEのないとき〜は,「certificate verify failed (OpenSSL::SSL::SSLError)」を含むエラーが出てくれました.
他に読んだところ:
- OpenSSLでcertificate verify failedが出た場合 - Qiita
- エラー:OpenSSL::SSL::SSLError SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed - komiyakの通り道
- OpenSSL Errors and Rails – Certificate Verify Failed · RailsApps
- Download a cacert.pem for RailsInstaller · GitHub
- ruby on rails - How to solve "certificate verify failed" on Windows? - Stack Overflow
(リリース:2013-10-18 未明)