Summary
Net::HTTP で HTTPS 接続した際、エラーが発生/path/to/net/http.rb:920:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
原因と対応
証明書が見つからないことが原因。証明書をダウンロードして、証明書を明示的に指定すればよい
cert のディレクトリを確認
% ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_DIR'
/usr/local/etc/openssl/certs
cert のファイルを確認
% ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'
/usr/local/etc/openssl/cert.pem
証明書をダウンロードして、証明書を明示的に指定
% wget http://curl.haxx.se/ca/cacert.pem
https = Net::HTTP.new('example.com', 443)
https.open_timeout = SYSTEM_TIMEOUT_SEC
https.read_timeout = SYSTEM_TIMEOUT_SEC
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.verify_depth = 5
https.ca_file = "./cacert.pem" # <= 追加
ad hocな対応
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
Reference
Stack Overflow - ruby on rails - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failedhttps://stackoverflow.com/questions/4528101/ssl-connect-returned-1-errno-0-state-sslv3-read-server-certificate-b-certificat
via
komiyakの通り道 - 2013-05-08 - エラー:OpenSSL::SSL::SSLError SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failedhttp://d.hatena.ne.jp/komiyak/20130508/1367993536