Я пытаюсь получить доступ к веб-сервису HTTPS, использующему аутентификацию SSL-сертификата, используя Ruby EventMachine, но я не могу заставить его работать.
Я написал следующий простой блок кода, чтобы проверить его сквознуюend:
require 'rubygems'
require 'em-http'
EventMachine.run do
url = 'https://foobar.com/'
ssl_opts = {:private_key_file => '/tmp/private.key',
:cert_chain_file => '/tmp/ca.pem',
:verify_peer => false}
http = EventMachine::HttpRequest.new(url).get :ssl => ssl_opts
http.callback do
p http.response_header.status
p http.response_header
p http.response
EventMachine.stop
end
http.errback do
EventMachine.stop
fail "Request failed"
end
end
Запуск вышеуказанных выходных данных <SSL_incomp>
с последующим появлением сообщения RuntimeError.Я попытался запустить с :verify_peer
, установленным на true и false, и это выдает мне ту же ошибку.Выполнение EventMachine::HttpRequest#get
без опции :ssl
делает то же самое.
Я также пытался отправить запрос в GMail (https://mail.google.com) без опции :ssl
(т.е. обычный HTTPS без сертификата) иэто работает, выводит код состояния 200, заголовки и тело.
Я попытался сделать тот же запрос к веб-службе с помощью curl, и это работает:
curl --silent --cert /tmp/private.key --cacert /tmp/ca.pem https://foobar.com/
Я думаю, чтоЯ либо неправильно использую гем em-http-request или EventMachine, либо файлы SSL в формате, который работает с curl, но не с EventMachine.
Кто-то знает, как решить приведенный выше пример, или предоставить аналогичныйПример использования EventMachine напрямую приветствуется!