Rails1.9を使用してHerokuでFTPoverTLSに接続しようとしています
Rails 1.9にはFTPTLSが含まれていないため、Rails1.8ftptls.rbファイルをlib/assetsにコピーしました。
これはローカルホストでは正常に機能しますが、証明書の検証に失敗するため、Herokuにプッシュすると失敗します。
lib / Assets / ftptls.rb:
=begin
= $RCSfile$ -- SSL/TLS enhancement for Net::HTTP.
= Info
'OpenSSL for Ruby 2' project
Copyright (C) 2003 Blaz Grilc <farmer@gmx.co.uk>
All rights reserved.
= Licence
This program is licenced under the same licence as Ruby.
(See the file 'LICENCE'.)
= Requirements
= Version
$Id: ftptls.rb 13657 2007-10-08 11:16:54Z gotoyuzo $
= Notes
Tested on FreeBSD 5-CURRENT and 4-STABLE
- ruby 1.6.8 (2003-01-17) [i386-freebsd5]
- OpenSSL 0.9.7a Feb 19 2003
- ruby-openssl-0.2.0.p0
tested on ftp server: glftpd 1.30
=end
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
Herokuからのエラー:
SSL_connectが返されました=1errno = 0 state = SSLv3サーバー証明書の読み取りB:証明書の検証に失敗しました
https接続に関するこのスレッドを見つけました: http ://www.quora.com/What-is-the-path-to-the-SSL-root-certificate-trusted-root-CA-on-Heroku
そこで、これをftptls.rbファイルに追加しようとしましたが、エラーが残りました。
ctx.ca_file = '/usr/lib/ssl/certs/ca-certificates.crt'
これを機能させるための考えはありますか?