2013-01-23 113 views
0

對於下面的代碼得到certificate verify failed (OpenSSL::SSL::SSLError)獲取`證書驗證失敗(OpenSSL的:: SSL :: SSLError)`埃羅與機械化對象

CODE

require 'mechanize' 

agent = Mechanize.new 

#{|a| a.ssl_version, a.verify_mode = 'SSLv3', OpenSSL::SSL::VERIFY_NONE} 

agent.set_proxy('3.209.30.25', 80) 
agent.ssl_version='SSLv3' 
agent.verify_mode= OpenSSL::SSL::VERIFY_PEER 

page = agent.get "https://gegsltraining.aravo.com/" 

錯誤

C:/Ruby193/lib/ruby/gems/1.9.1/gems/net-http-persistent-2.8/lib/net/http/persist 
ent/ssl_reuse.rb:70:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 rea 
d server certificate B: certificate verify failed (OpenSSL::SSL::SSLError) 

編輯

我只是修改後的代碼如下:

require 'mechanize' 
agent = Mechanize.new 
#{|a| a.ssl_version, a.verify_mode = 'SSLv3', OpenSSL::SSL::VERIFY_NONE} 
agent.set_proxy('3.209.30.25', 80) 
agent.ssl_version='SSLv3' 
cert_store = OpenSSL::X509::Store.new 
cert_store.add_file 'E:\WIPData\Ruby\Scripts\cacert.pem' 
agent.cert_store = cert_store 
agent.verify_mode= OpenSSL::SSL::VERIFY_PEER (tried OpenSSL::SSL::VERIFY_NONE none of them going good) 

新的錯誤

E:\WIPData\Ruby\Scripts>mechanizev1.rb 
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2632:in `error!': 500 "Internal Server Err 
or" (Net::HTTPFatalError) 

如何成功做到這一點的認證驗證?幫我。

+0

請幫我在這裏,我的代碼卡住了,由於問題! –

+1

您似乎在最基本的概念上遇到很多問題。你有沒有考慮聘請某人來幫助你? – pguardiario

+0

我認爲社區可以是一個很好的選擇,我可以有多個面臨同樣問題的人。他可能對我有幫助。因爲這些確實是一些嚴重的問題,其中沒有一個代碼運行。 –

回答

0

只需將您的mechanize agent object.http.ca_file指向此文件即可。

agent.agent.http.ca_file = '/etc/ssl/certs/curl-ca-bundle.crt' 

Otherway要做到這一點,是保存在應用程序的lib目錄 捲曲-CA-bundle.crt,然後設置

agent.agent.http.ca_file = 'lib/curl-ca-bundle.crt' 
+0

你的意思是說'C:\ Ruby193 \ lib'嗎?我正在使用'windows-XP' –

相關問題