【发布时间】:2013-09-24 01:19:23
【问题描述】:
我正在尝试用 Ruby 编写一个 HTTPS 客户端。它将使用 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 客户端证书支持
- 保持活动状态
有一个pull request 正在等待应该提供它的rest-client。 httparty 有 persistent_httparty 但如果它支持 SSL 客户端证书,则有 no documentation for it。
我可以派生rest-client,合并现在已经有点腐烂的拉取请求,然后使用它。但我肯定在这里遗漏了一些东西......是否有一个现有的图书馆可以提供我正在寻找的东西?或者 httparty 的一些文档解释了 SSL 客户端证书与该库的使用?
任何帮助将不胜感激。
【问题讨论】:
-
OpenSSL::SSL::VERIFY_NONE通常是个坏主意。如果工作流程包括最低限度的常规检查,那么您可能会发现它不起作用。
标签: ruby http https keep-alive