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'