2013-06-28 76 views
1

有沒有在單個RestClient連接上強制使用SSL版本的方法?將RestClient SSL版本設置爲SSLv3

我需要將其設置爲'SSLv3'。

我能做到這一點,使用所有連接:

OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ssl_version] = 'SSLv3' 

但是,這當然是過於全球。

當試圖通過在初始化參數,它不工作:

RestClient::Resource.new('https://example.com',:ssl_version => "SSLv3") 
+0

技術上講,你不能用上面的OpenSSL方法來設置加密所有連接。 SSLv3在RestClient中被硬編碼。 https://github.com/treeder/rest_client/blob/master/lib/restclient/request.rb#L59(至少對於gem'd版本) –

回答

2

您可以使用像這樣的調用:

RestClient::Request.execute(:url => 'https://example.com', :ssl_version => 'SSLv3', :method => 'get') 

但需要注意的是舊版本的休息客戶端的會默默放棄:ssl_version選項。您可以測試是否這是通過使用僞造的SSL版本發生:

>> RestClient::Request.execute(:url => 'https://example.com', :ssl_version => 'blah', :method => 'get') 
ArgumentError: unknown SSL method `blah'. 
from /usr/lib/ruby/1.9.1/openssl/ssl-internal.rb:38:in `ssl_version='