Я пытаюсь написать HTTPS-клиент на Ruby. Он будет подключаться к серверу с использованием HTTPS, передавая токен аутентификации (полученный через отдельный процесс входа в систему) и сертификат клиента SSL.
Я делаю следующее с rest-client:
client = RestClient::Resource.new(url,
:ssl_client_cert => OpenSSL::X509::Certificate.new(File.read('./certificate/client-2048.pem')),
:ssl_client_key => OpenSSL::PKey::RSA.new(File.read('./certificate/client-2048.key'), ''),
:verify_ssl => OpenSSL::SSL::VERIFY_NONE)
# ...
headers = {
'X-Application' => APP_KEY,
'X-Authentication' => @session_token,
'content-type' => 'application/json',
'Accept' => 'application/json'
}
response = client.post(request, headers)
Это работает, но я хотел бы использовать keep-alive, чтобы не проходить весь процесс установления соединения каждый раз, когда я хочу сделать запрос. Связанная с этим задержка делает приложение для мониторинга, которое я пишу, гораздо менее полезным.
Однако я не могу найти библиотеку Ruby, которая предлагает следующее:
- поддержка HTTPS
- Поддержка SSL-сертификата клиента
- Keep-Alive
Существует запрос на вытягивание для rest-client, который должен его предоставить. https://github.com/jnunemaker/httparty имеет https://github.com/soupmatt/persistent_httparty, но если он поддерживает клиентские сертификаты SSL, для него нет документации.
Я мог бы раскошелиться на rest-client, слить запрос на включение, который к настоящему времени немного сгнил, и использовать его. Но, конечно же, я что-то здесь упускаю... существует ли существующая библиотека, которая предлагает то, что я ищу? Или какая-нибудь документация для httparty, в которой объясняется использование SSL-сертификата клиента с этой библиотекой?
Будем очень благодарны любой помощи.
OpenSSL::SSL::VERIFY_NONE
обычно плохая идея. Если рабочий процесс включает минимальные стандартные проверки, вы можете обнаружить, что он не работает. - person jww   schedule 19.11.2016