पर एफ़टीपी के माध्यम से अनिश्चित होस्ट से कनेक्ट करें एक विक्रेता जो मैं एक फाइल लेता हूं, से एसएसएल पर एफ़टीपी से एफ़टीपी में बदल रहा है।टीएलएस/एसएसएल
मैं net/ftp
से net/ftptls
नया मेजबान मैं कनेक्ट करने की आवश्यकता करने के लिए प्रमाणित नहीं है और मेरी स्क्रिप्ट वापस इस त्रुटि की रिपोर्ट करने के लिए अपने कोड को अद्यतन करने की कोशिश कर रहा हूँ।
होस्ट नाम सर्वर प्रमाणपत्र
विक्रेता इस ठीक नहीं होगा के साथ मेल नहीं किया गया था।
/usr/lib/ruby/1.8/net/ftptls.rb
पर देखकर मैंने सोचा कि अविश्वसनीय होस्ट को अनदेखा करने के लिए बंदर-पैच FTPTLS को बहुत मुश्किल नहीं होगा।
मैंने verify_mode
को OpenSSL::SSL::VERIFY_NONE
में बदलने और post_connection_check` पंक्ति को टिप्पणी करने का प्रयास किया।
न तो काम किया।
यह कैसे करें इस पर कोई विचार?
require 'socket'
require 'openssl'
require 'net/ftp'
module Net
class FTPTLS < FTP
def connect(host, port=FTP_PORT)
@hostname = host
super
end
def login(user = "anonymous", passwd = nil, acct = nil)
store = OpenSSL::X509::Store.new
store.set_default_paths
ctx = OpenSSL::SSL::SSLContext.new('SSLv23')
ctx.cert_store = store
ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER
ctx.key = nil
ctx.cert = nil
voidcmd("AUTH TLS")
@sock = OpenSSL::SSL::SSLSocket.new(@sock, ctx)
@sock.connect
@sock.post_connection_check(@hostname)
super(user, passwd, acct)
voidcmd("PBSZ 0")
end
end
end