Nhà cung cấp tôi lấy tệp từ đang thay đổi từ FTP sang FTP qua SSL.Kết nối với máy chủ không được bảo mật qua FTP qua TLS/SSL
Tôi cố gắng để cập nhật mã của tôi từ net/ftp
để net/ftptls
Người dẫn chương trình mới tôi cần phải kết nối với không được xác nhận và kịch bản của tôi báo cáo lại lỗi này.
hostname đã không phù hợp với các chứng chỉ máy chủ
Nhà cung cấp sẽ không sửa lỗi này.
Nhìn vào /usr/lib/ruby/1.8/net/ftptls.rb
Tôi nghĩ sẽ không quá khó khăn để vá lỗi FTPTLS để bỏ qua máy chủ không đáng tin cậy.
Tôi đã thử thay đổi verify_mode
thành OpenSSL::SSL::VERIFY_NONE
và nhận xét ra dòng post_connection_check`.
không hoạt động.
Bất kỳ suy nghĩ nào về cách thực hiện việc này?
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