HTTPS通信でcertificate verify failedエラー
Rubyでサーバー間通信を行うために以下のコードを実装したのですが、以下のようなエラーが出てしまいます。足りない点などありましたらアドバイスいただけないでしょうか。
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
実装
require 'net/https'
~~
https = Net::HTTP.new('ホスト', 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"
cacert.pemは以下で取得し、上記の実装ファイルと同じ階層に置いています。
https://curl.haxx.se/docs/caextract.html
以下を指定して証明書を無視した場合は通信できており、
OpenSSL::SSL::VERIFY_NONE
cert.pemが本当に存在しているのか以下のコマンドを実行すると、
証明書情報が出力されていたので保存されているのだと思います。
$ cat (ファイルパス)/cacert.pem
ちなみに、以下は接続したと出力されたのですが、HTTPSを指定すると
接続を拒否されています。なにかサーバへの設定が必要なのでしょうか?
$ wget -S --spider http://xx.xx.xx.xx
スパイダーモードが有効です。リモートファイルが存在してるか確認します。
--2018-05-10 09:27:27-- http://xx.xx.xx.xx/
xx.xx.xx.xx:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています...
HTTP/1.1 200 OK
~~
$ wget -S --spider https://xx.xx.xx.xx
スパイダーモードが有効です。リモートファイルが存在してるか確認します。
--2018-05-10 09:28:06-- https://xx.xx.xx.xx/
xx.xx.xx.xx:443 に接続しています... 失敗しました: 接続を拒否されました.