SSL-сертификат Savon

Я изо всех сил пытаюсь заставить камень Savon подключиться к одному из наших серверов. Я продолжаю получать сообщение об ошибке, в котором говорится, что я не могу пройти мимо ssl. Я прочитал множество руководств и исправлений, но ни один из них не работает.

Любая помощь приветствуется - это сделает мой понедельник, если я смогу пройти мимо него :-).

Ошибка:

D, [2011-06-20T09:43:02.002993 #10328] DEBUG -- : Retrieving WSDL from: http://path_to_wsdl:4443/sm/services/mailing/2009/03/02?wsdl
D, [2011-06-20T09:43:02.129057 #10328] DEBUG -- : HTTPI executes HTTP GET using the httpclient adapter
/.rvm/gems/ruby-1.9.2-p0/gems/httpclient-2.2.1/lib/httpclient/session.rb:276:in `connect': SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert unexpected message (OpenSSL::SSL::SSLError)

Мой код:

require 'savon'

client = Savon::Client.new "path_to_my_wsdl"

client.http.auth.ssl.cert_file = "path/cert.pem"

client.http.auth.ssl.cert_key_file = "/path/localhost.key"
client.http.auth.ssl.verify_mode = :none

client.wsse.credentials "username", "password"

client.wsdl.soap_actions

person Northband    schedule 20.06.2011    source источник
comment
Вы уверены, что SSL работает на порту 4433?   -  person President James K. Polk    schedule 20.06.2011
comment
Насколько я знаю, когда я обращаюсь к файлу wsdl через https, если я делаю это через браузер, он помечает его как самозаверяющий сертификат. Мне интересно, почему/как не срабатывает verify_mode = :none.   -  person Northband    schedule 20.06.2011
comment
какую версию httpi gem вы используете?   -  person rubiii    schedule 20.06.2011
comment
Был запущен httpi (0.9.3), но теперь обновлен до 0.9.4. Тот же выход, хотя. :-(   -  person Northband    schedule 20.06.2011
comment
не уверен, что проблема в этом, но кажется, что если для параметра verify_mode установлено значение :none, и сертификат, и ключ не установлены?! вы можете попробовать удалить оператор If.   -  person rubiii    schedule 20.06.2011
comment
Да, возможно, у меня это вырезано ... Проблема в том, что я не знаю, какие настройки требуются: request.auth.ssl.cert_key_file = client_key.pem request.auth.ssl.cert_file = client_cert.pem request.auth.ssl. ca_cert_file = ca_cert.pem В других вызовах API, для которых я не использую httpi, я просто устанавливаю :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE, что работает нормально. Здесь требуется какой-то сертификат, и я не совсем знаю, как определить, какой именно.   -  person Northband    schedule 20.06.2011
comment
Мне любопытно, есть ли способ просто пропустить SSL? Откровенно говоря, мне интересно, ссылаюсь ли я на неправильный сертификат/ключ. Чтобы избежать этого, было бы проще всего пропустить SSL.   -  person Northband    schedule 20.06.2011
comment
Попытка заставить SSL работать через HTTPI: gist.github.com/0de6e2b3c5027699a211   -  person Northband    schedule 20.06.2011
comment
Обновление - SSL отлично работает на аутентифицированном ssl - проблема, с которой я столкнулся, связана с самозаверяющим ssl - что заставляет меня думать, что код в порядке - это сервер, к которому я подключаюсь, имеет проблемы. Тем не менее, пытаясь найти обходной путь.   -  person Northband    schedule 20.06.2011
comment
если вы можете предоставить доступ к сервису и сертификату ssl, я позабочусь о том, чтобы это заработало. пожалуйста, свяжитесь с нами через (я на rubiii dot com). Я не думаю, что комментарии - лучший способ обсудить это.   -  person rubiii    schedule 20.06.2011
comment
если он отлично работает с самоподписанным сертификатом, используя httpclient самостоятельно, то он должен работать через httpi. если это не так, и проблема заключается в самозаверяющем сертификате, то я не знаю, могу ли я помочь.   -  person rubiii    schedule 20.06.2011
comment
Rubii - вы очень помогли и добры. Я не думаю, что это ваш код. Я думаю, что это проблема сервера/хоста. Я подключался почти ко всем другим серверам на планете, но в особенности к этому. Очень странно. Я собираюсь связаться с владельцем, чтобы узнать, что случилось. В противном случае я могу принять ваше предложение. С уважением - Адам О   -  person Northband    schedule 21.06.2011
comment
спасибо за помощь - в конечном итоге проблема с хостом в целевой коробке :-). Спасибо еще раз!   -  person Northband    schedule 28.06.2011


Ответы (3)


Savon 2.x поддерживает глобальную опцию ssl:

Savon.client(ssl_verify_mode: :none)

и

Savon.client(ssl_version: :SSLv3) 
person Luca Arcara    schedule 06.02.2015

Не уверен, что вы уже сделали это, но когда мне пришлось использовать Savon для проекта, я нашел невероятно полезным убедиться, что сервер Soap работает так, как я думал, с SoapUI (http://www.eviware.com/) . Затем вы можете вывести запрос SOAP из двух и сравнить.

person CambridgeMike    schedule 19.09.2011

Существует ошибка в обработке Ruby net/http рукопожатия SSL.

Попробуйте принудительно установить версию SSL, чтобы обойти ошибку:

client.http.auth.ssl.sock.ssl_version="SSLv3"
person ihoka    schedule 15.12.2012