ruby mechanize エラー `connect_nonblock’: SSL_connect returned=1 errno=0 state=error: certificate verify failed (OpenSSL::SSL::SSLError)

ruby mechanize エラー `connect_nonblock’: SSL_connect returned=1 errno=0 state=error: certificate verify failed (OpenSSL::SSL::SSLError)

rubyのスクレイピングツールmechanizeでhttps://test.comへ通信をしようとしたら以下のエラーが出ました。

$ ruby login-mechanize.rb
C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect returned=1 errno=0 state=error: certificate verify failed (OpenSSL::SSL::SSLError)
 from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect'
 from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:863:in `do_start'
 from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:858:in `start'
 from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:700:in `start'
 from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:631:in `connection_for'
 from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:994:in `request'
 from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/mechanize-2.7.5/lib/mechanize/http/agent.rb:274:in `fetch'
 from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/mechanize-2.7.5/lib/mechanize.rb:464:in `get'
 from login-8122-mechanize.rb:15:in `login'
 from login-8122-mechanize.rb:34:in `<main>'

エラーとなったrubyのコードは以下↓

require 'mechanize'

module Crawler
 class testtest
 def login
 agent = Mechanize.new
 # agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
 agent.user_agent = 'Windows Mozilla'
 agent.get('https://test.com') do |page|
 # 何か処理をしようとした
 end
 end
 end
end

crawler = Crawler::testtest.new
crawler.login

windowsから動かしたのでwindowsにopensslを入れてみるやり方もやってみたが解消されず、他のやり方を探したところ以下のコードに変えたら出来ました。

require 'mechanize'

module Crawler
 class testtest
 def login
 agent = Mechanize.new
 agent.verify_mode = OpenSSL::SSL::VERIFY_NONE  # この行を追加
 agent.user_agent = 'Windows Mozilla'
 agent.get('https://test.com') do |page|
 # 何か処理をしようとした
 end
 end
 end
end

crawler = Crawler::testtest.new
crawler.login

verify_mode に OpenSSL::SSL::VERIFY_NONEを設定したら動いた。完

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です