読者です 読者をやめる 読者になる 読者になる

Code for final

ふぁいなる向けのコード置き場です。すでにコードじゃないこともいっぱい。

Rubyのhttps通信で"certificate verify failed (OpenSSL::SSL::SSLError)"というエラーが出たが、証明書を設定するのが面倒でとりあえず動かしたいとき。

Ruby

Rubyで'net/https'を使ってHTTPS通信を行ったとき、以下のエラーがでました。

C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

どうやらSSLの検証に引っかかっているみたいです。

とりあえず動かしたい!ってときは以下のようにverify_modeの指定を追加して検証しないというように設定すればOKです。

        https = Net::HTTP.new('xxx.xxx.xxx',443)
        https.use_ssl = true

        # これを追加
        https.verify_mode = OpenSSL::SSL::VERIFY_NONE

        https.start{
        
        }

以下のマニュアルにはデフォルトはVERIFY_NONEって書いてありますけど、追加しないと動きませんでした。

instance method Net::HTTP#verify_mode= (Ruby 2.3.0)

正しく対処するには証明書をダウンロードして明示的に指定する必要があるらしいですが、とりあえず動かしたいときはこれだけでOKですね。