Kolejny problem z certyfikatami OpenSSL

Posiadam:

  • certyfikat CA
  • certyfikat X509
  • klucz prywatny RSA

po użyciu patcha do XMLRPC::Client, który umożliwia połączenie z wykorzystaniem certyfikatów, przy próbie połączenia otrzymuję komunikat błędu.

key = OpenSSL::PKey::RSA.new File.open('/.../private/key.pem') cert = OpenSSL::X509::Certificate.new File.open('/.../cert/cert.crt') conn = XMLRPC::Client.new 'webservice_host', 'webservice_path', 'webservice_port', nil, nil, nil, nil, true, nil, '/../ca.pem', cert, key conn.call(...)
treść błędu:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server hello B: serverhello tlsext from /.../lib/ruby/1.9.1/net/http.rb:799:in `connect' from /.../lib/ruby/1.9.1/net/http.rb:799:in `block in connect' from /.../lib/ruby/1.9.1/timeout.rb:54:in `timeout' from /.../lib/ruby/1.9.1/timeout.rb:99:in `timeout' from /.../lib/ruby/1.9.1/net/http.rb:799:in `connect' from /.../lib/ruby/1.9.1/net/http.rb:755:in `do_start' from /.../lib/ruby/1.9.1/net/http.rb:744:in `start' from /.../lib/ruby/1.9.1/net/http.rb:1284:in `request' from /.../lib/ruby/1.9.1/net/http.rb:1195:in `request_get' from (irb):23 from /.../lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' from /.../lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' from /.../lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>'
Drugie co próbowałem to próbowałem przetestować połączenie z serwerem na którym stoi webservice, poprzez pobranie pliku za pomocą rubiego:

require 'net/https' https = Net::HTTP.new('host', port) https.use_ssl = true https.ca_file = '/../ca.pem' https.verify_mode = OpenSSL::SSL::VERIFY_PEER https.verify_depth = 5 https.cert = OpenSSL::X509::Certificate.new File.open('/.../cert/cert.crt') https.key = OpenSSL::PKey::RSA.new File.open('/.../private/key.pem') https.request_get('/.../test.txt')
treść błędu:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server hello B: serverhello tlsext from /.../lib/ruby/1.9.1/net/http.rb:799:in `connect' from /.../lib/ruby/1.9.1/net/http.rb:799:in `block in connect' from /.../lib/ruby/1.9.1/timeout.rb:54:in `timeout' from /.../lib/ruby/1.9.1/timeout.rb:99:in `timeout' from /.../lib/ruby/1.9.1/net/http.rb:799:in `connect' from /.../lib/ruby/1.9.1/net/http.rb:755:in `do_start' from /.../lib/ruby/1.9.1/net/http.rb:744:in `start' from /.../lib/ruby/1.9.1/net/http.rb:1284:in `request' from /.../lib/ruby/1.9.1/net/http.rb:1195:in `request_get' from (irb):23 from /.../lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' from /.../lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' from /.../lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>'
Ostatnią rzeczą, którą sprawdziłem to pobranie pliku za pomocą programu wget, to zakończyło się sukcese, tzn sprawdzanie ccertyfikatu, które ustawione jest przed wejściem na serwer przeszło bez problemu

wget --certificate=/.../cert/cert.crt --private-key=/.../private/key.pem --ca-certificate=/../ca.pem -O /tmp/x https://host/.../test.txt

Z tego wynika, że robię coś źle w kodzie Rubiego, niestety nie mam pojęcia jakby to można inaczej ugryźć. Będę wdzięczny za pomoc.