2017-08-16 21 views
1

SSL経由で特定のサイトにアクセスし、そのサイトのデータを照会するWebクローラーに接続しようとしています。このサイトの認証は、自己署名デジタル証明書によるものです。サイトにアクセスしたいときに、この証明書を.pfx形式で自分のapiにアップロードして.pemに変換します。この証明書でサイトにアクセスしようとすると、応答はステータス403(禁止)になります。 しかし、証明書が.pfx形式のブラウザからサイトにアクセスしようとすると、通常は取得します。 私はすでにMechanizeを使ってみましたが、数ヶ月前に動作するまで働いていましたが、エラーが出るようになりました。 SSL_connect returned = 1 errno = 0 state = SSLv3 read finished A: sslv3 alert bad certificate サイトは古いです、更新は頻繁に受信されません。 その後、すでにnet/http libを使用しようとしていて、エラーが持続したので、httprb gemを使用しようとしましたが、最後にファラデーで試しました。上記のエラーまたは応答ステータス== 403で、すべての試行が終了しました。 接続するには何ができますか?スクリプトに何か問題がありますか?私は通過する必要がある情報が不足していますか?Ruby - SSLで接続し、クライアント証明書で認証する - sslv3アラート不良証明書

コード:

# Faraday customs method: 

class FaradayHttp 
    def with_openssl 
    system "openssl pkcs12 -in my-certificate-path -out certificate-output-path -nodes -password pass:certificate-password" 

    def cert_object 
     OpenSSL::X509::Certificate.new File.read("certificate-output-path") 
    end 

    # create PKey 
    def key_object 
     OpenSSL::PKey.read File.read("certificate-output-path") 
    end 


    faraday = Faraday::Connection.new 'https://example-site.com', 
    :ssl => { 
     certificate: cert_object, 
     private_key: key_object, 
     version: :SSLv3, 
     verify: false 
    } 
    faraday 
    end 
end 

# Controller that try to connect with the ssl server: 

agent = FaradayHttp.new.with_openssl 
page = agent.get '/login_path' 

答えて

0
# mypki will prompt you for certificates 
require 'mypki' 

# faraday will use certificates from mypki 
require 'faraday' 

faraday = Faraday::Connection.new 'https://example-site.com' 
faraday.get '/login_path' 
関連する問題