Si vous utilisez net/https de base, alors il est assez simple:
require 'net/https'
require 'uri'
uri = URI.parse(ARGV[0] || 'https://localhost/')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == "https" # enable SSL/TLS
http.key = pkey #Sets an OpenSSL::PKey::RSA or OpenSSL::PKey::DSA object.
http.cert= cert #Sets an OpenSSL::X509::Certificate object as client certificate
http.start {
http.request_get(uri.path) {|res|
print res.body
}
}
Si vous les avez combinés, vous aurez à les masser en utilisant des méthodes utilitaires OpenSSL.
Pour un client http personnalisé, vous devriez lire les documents de la bibliothèque ruby openssl pour les détails sanglants.
Mais en un mot, quelque chose comme cela devrait fonctionner:
ctx = OpenSSL::SSL::SSLContext.new
ctx.key = private_key_file
ctx.cert = certificate_file
..et puis fournir le contexte à votre connexion.