キー認証を使用する XML-RPC サーバーと対話する必要があります。要求を受け入れる前に、サーバーは鍵のペア (ssl 秘密鍵と ssl 証明書) を検証します。これがひどいことだとは理解していますが、それは私が取り組まなければならないことです。
私の質問はこれです: このリクエストでキーと証明書を渡す簡単な方法はありますか? Ruby で xmlrpc/Client を使用していますが、ドキュメントにはこれが可能であることが示されていないようです。私の現在のコードは次のとおりです。
エラー:
/usr/lib/ruby/1.8/net/http.rb:586:in
connect': sslv3 alert handshake failure >(OpenSSL::SSL::SSLError) from /usr/lib/ruby/1.8/net/http.rb:586:in
connect' from /usr/lib/ruby/1.8/net/http.rb:553:indo_start' from /usr/lib/ruby/1.8/net/http.rb:542:in
start' from /usr/lib/ruby/1.8 /net/http.rb:1035:inrequest' from /usr/lib/ruby/1.8/net/http.rb:992:in
post2' from /usr/lib/ruby/1.8/xmlrpc/client.rb:535:indo_rpc' from /usr/lib/ruby/1.8/xmlrpc/client.rb:420:in
call2' from /usr/lib/ruby/1.8/xmlrpc/client.rb:410 :in `call'
クラスファイル:
class RpcRequest
require "xmlrpc/client"
# Automatically create the connection
def initialize(connection_params)
@connection = XMLRPC::Client.new(connection_params['host'], connection_params['path'], connection_params['port'], connection_params['proxy_host'], connection_params['proxy_port'], connection_params['user'], connection_params['password'], connection_params['use_ssl'], connection_params['timeout'])
end
# Make the xml rpc call
def make_call(method, request_params)
@response = @connection.call(method, request_params)
end
end
ドライバーファイル:
require 'RpcRequest.rb'
require 'config.rb'
require 'openssl'
# Define parameters for the connection
connect_params = Hash.new
connect_params['host'] = $host
connect_params['path'] = $path
connect_params['port'] = $port
connect_params['proxy_host'] = $proxy_host
connect_params['proxy_port'] = $proxy_port
connect_params['user'] = $user
connect_params['password'] = $password
connect_params['use_ssl'] = $use_ssl
connect_params['timeout'] = $timeout
# Define parameters for the request
request_params = Hash.new
request_params['fname'] = 'Robert'
request_params['lname'] = 'Jones'
request = RpcRequest.new(connect_params)
puts request.inspect
request.make_call('test.hello', request_params)