Ruby SOAP SSL горе - PullRequest
       28

Ruby SOAP SSL горе

1 голос
/ 14 октября 2008

У меня есть клиент SOAP в Ruby, который я пытаюсь заставить работать с сервером Ruby SOAP, но безрезультатно. Клиент отлично работает по SSL с сервером Python SOAP, но не с версией Ruby. Вот как выглядит сервер:

require 'soap/rpc/standaloneServer'
require 'soap/rpc/driver'
require 'rubygems'
require 'httpclient'

def cert(filename)
  OpenSSL::X509::Certificate.new(File.open("path to cert.cert") { |f|
    f.read
  })
end

def key(filename)
  OpenSSL::PKey::RSA.new(File.open("path to rsaprivate.key") { |f|
    f.read
  })
end

class Server < SOAP::RPC::HTTPServer
 ~code snipped for readability~
end

server = Server.new(:BindAddress => HelperFunctions.local_ip, :Port => 1234, :SSLCertificate => cert("path to cert"), :SSLPrivateKey => key("path to rsa private key"))
new_thread = Thread.new { server.start }

Я сократил часть кода для удобства чтения (например, у меня есть некоторые методы, которые я там предоставляю), и он отлично работает с выключенным SSL. Но когда клиент пытается подключиться, он видит это:

warning: peer certificate won't be verified in this SSL session
/usr/lib/ruby/1.8/net/http.rb:567: warning: using default DH parameters.
/usr/lib/ruby/1.8/net/http.rb:586:in `connect': unknown protocol (OpenSSL::SSL::SSLError)

Я попытался получить совет от этого сообщения , и теперь я вижу это сообщение:

/usr/lib/ruby/1.8/soap/httpconfigloader.rb:64:in `set_ssl_config': SSL not supported (NotImplementedError)

Буду очень признателен за любые идеи, как это исправить.

Ответы [ 3 ]

2 голосов
/ 14 октября 2008

Arg. Я пытался проследовать по этой ссылке и оказалось, что мне не хватало простого включения:

require 'webrick/https'

Что в сочетании с помощью по ссылке в оригинальном вопросе решает проблему. Надеюсь, что это спасет кого-то еще в час скорби :)

1 голос
/ 21 апреля 2009

«SSL не поддерживается» может быть вызвано отсутствием установленного httpclient.

0 голосов
/ 19 апреля 2009

Я тоже .. и не забудьте поставить: SSLEnable => true потратить пару часов на выяснение этого ...

server = Server.new(:BindAddress => HelperFunctions.local_ip, :Port => 1234, :SSLEnable => true, :SSLCertificate => cert("path to cert"), :SSLPrivateKey => key("path to rsa private key"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...