我有以下工作curl命令:SSL的問題,但不能捲曲
curl -k -E some_cert.pem https://someurl.com/__dirlist__
試圖用Ruby實現這個我有:
uri = URI.parse('https://someurl.com/__dirlist__')
http_session = Net::HTTP.new(uri.host, uri.port)
http_session.ca_file = "some_cert.pem"
http_session.use_ssl = true
http_session.verify_mode = OpenSSL::SSL::VERIFY_NONE
res = http_session.get(uri.request_uri)
我用打周圍的一切不同版本的SSL(使用http_session.ssl_version = :SSLv2_client
等),所有這些都失敗了(一些使用不同的消息),我使用wireshark來匹配版本以查看curl使用的是什麼,所以不要認爲這是問題(儘管ruby發送了一堆額外的設置沒有一個似乎相關)。
從閱讀其他錯誤報告我已經看到人們有很多與他們的證書存儲沒有適當的證書有關的問題,但SSL::VERIFY_NONE
我不明白這可能很重要。
我不能排除它可能是openssl烘焙到我的Ruby,但它似乎不太可能給我我也在另一臺機器上運行此代碼並得到相同的錯誤,我會假設捲曲鏈接相同的openssl(我不知道如何檢查這個)。
我已經瀏覽了rdocs,就像我用盡了Net:HTTP中的所有可用設置。
這是我看到的不倫不類的誤差(略匿名):
OpenSSL::SSL::SSLError: SSL_read:: ssl handshake failure
from /Users/a_user/.rvm/gems/[email protected]/gems/right_http_connection-1.3.0/lib/net_fix.rb:52:in `sysread'
from /Users/a_user/.rvm/gems/[email protected]/gems/right_http_connection-1.3.0/lib/net_fix.rb:52:in `block in rbuf_fill'
from /Users/a_user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
from /Users/a_user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
from /Users/a_user/.rvm/gems/[email protected]/gems/right_http_connection-1.3.0/lib/net_fix.rb:51:in `rbuf_fill'
from /Users/a_user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
from /Users/a_user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
from /Users/a_user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
from /Users/a_user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
from /Users/a_user/.rvm/gems/[email protected]/gems/right_http_connection-1.3.0/lib/net_fix.rb:146:in `request'
from /Users/a_user/.rvm/gems/[email protected]/gems/right_http_connection-1.3.0/lib/net_fix.rb:131:in `block in request'
from /Users/a_user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:745:in `start'
from /Users/a_user/.rvm/gems/[email protected]/gems/right_http_connection-1.3.0/lib/net_fix.rb:129:in `request'
from /Users/a_user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:1026:in `get'
您可能需要重新編譯您的'rvm'構建的Ruby,以確保它具有正確捆綁的OpenSSL庫。嘗試建立'1.9.3-p448',看看你是否仍然有這個問題。 '-p0'確實過時了。 – tadman
看看[Curb](https://github.com/taf2/curb)寶石。它使用cURL的封面,所以如果它與cURL一起工作,它將與Curb和Ruby一起工作。 –