Если использовать базовую сеть / https, то все довольно просто:
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
}
}
Если вы объедините их, вам придется помассировать их, используя некоторые служебные методы openssl.
Для пользовательского http-клиента вы должны прочитать документы для библиотеки ruby openssl для подробностей.
Но, в двух словах, что-то вроде этого должно работать:
ctx = OpenSSL::SSL::SSLContext.new
ctx.key = private_key_file
ctx.cert = certificate_file
.. и затем предоставьте контекст для вашего соединения.