Ошибка чтения сертификата сервера SSLv3 при использовании Mechanize для входа на flicker.com
Я пытаюсь выполнить следующий код в машине Windows 7, используя Mechanize и Ruby.
require 'mechanize'
a = Mechanize.new { |agent|
# Flickr refreshes after login
agent.follow_meta_refresh = true
}
a.get('https://www.flickr.com/') do |home_page|
signin_page = a.click(home_page.link_with(:text => /Sign In/))
puts signin_page.uri
my_page = signin_page.form_with(:id => 'mbr-login-form') do |form|
username_field = form.field_with(:id => 'login-username')
username_field.value = 'some_username'
password_field = form.field_with(:id => 'login-passwd')
password_field.value = 'some_password'
end.submit
end
Я получаю следующее сообщение об ошибке,
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/net-http-persistent-2.9.4/lib/net/http/persistent/ssl_reuse.rb:70:in `connect': SSL_connect
SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/net-http-persistent-2.9.4/lib/net/http/persistent/ssl_reuse.rb:70:in `block in
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/timeout.rb:55:in `timeout'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/timeout.rb:100:in `timeout'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/net-http-persistent-2.9.4/lib/net/http/persistent/ssl_reuse.rb:70:in `connect'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/net/http.rb:756:in `do_start'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/net/http.rb:751:in `start'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:700:in `start'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:631:in `connection_for'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:994:in `request'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mechanize-2.7.3/lib/mechanize/http/agent.rb:259:in `fetch'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mechanize-2.7.3/lib/mechanize.rb:440:in `get'
from first.rb:19:in `<main>'
Я установил гем 'Certified', но все еще получаю ошибку. Любое понимание?
2 ответа
Похоже, что большинство компаний отказываются от использования SSLv3, мне пришлось сказать механизму, чтобы он явно использовал ssl_version='TLSv1' для решения проблемы.
a = Mechanize.new {|a| a.ssl_version, a.verify_mode = 'TLSv1',OpenSSL::SSL::VERIFY_NONE}
Спасибо за понимание, предоставленное этим постом.
Вы столкнулись с этой проблемой из-за того, что целевой сайт больше не поддерживает SSLv3
, Небольшой поиск в Google нашел howto-manually-add-trust-cert-to-rubygems.md, который может удержать ваше решение. Я заранее прошу прощения за то, что я не делаю Ruby на Windows, поэтому я не могу копировать. В Linux проблема обычно решается обновлением openssl
как я ответил в этом посте.