[Server & Network General] さくらのレンタルサーバーから Net:HTTP で HTTPS(SSL) 通信する Ruby のコード
memo.
Contents
症状
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
こちらを参考にさせて頂きました。ありがとうございます。
調査
参照している証明書はどこにあるのか。
% irb
irb(main):001:0> require 'openssl'
=> true
irb(main):002:0> OpenSSL::X509::DEFAULT_CERT_FILE
=> "/etc/ssl/cert.pem"
実体はない模様。
% cat /etc/ssl/cert.pem
cat: /etc/ssl/cert.pem: No such file or directory
対応
証明書あたりを突っ込んで調べるとハマりそうなので、OpenSSL::SSL::VERIFY_NONE
で対応。
require 'openssl'
require 'net/http'
https = Net::HTTP.new('www.google.co.jp', 443) # address, port
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
# https.verify_mode = OpenSSL::SSL::VERIFY_PEER
# https.ca_file = '/etc/ssl/cert.pem'
https.start do
response = https.get('/') # path
puts response.body
end