使用Ruby 1.9.3的OpenSSL问题
发布时间:2020-12-16 22:14:52 所属栏目:百科 来源:网络整理
导读:我在Ubuntu 12.04上有OpenSSL 1.0.1 Ruby 1.9.3的半严重问题. 所有ruby都安装有rvm require 'uri'require 'net/http'require 'net/https'endpoint = "https://secure.mmoagateway.com/api/transact.php"RUBY_184_POST_HEADERS = { "Content-Type" = "applica
我在Ubuntu 12.04上有OpenSSL 1.0.1
Ruby 1.9.3的半严重问题.
所有ruby都安装有rvm require 'uri' require 'net/http' require 'net/https' endpoint = "https://secure.mmoagateway.com/api/transact.php" RUBY_184_POST_HEADERS = { "Content-Type" => "application/x-www-form-urlencoded" } body = "orderid=ae5dd847d9f31209cbffeeea076ed966&orderdescription=Active+Merchant+Remote+Test+Purchase&ccnumber=4222222222222222&ccexp=0913&cvv=123&company=Widgets+Inc&address1=1234+My+Street&address2=Apt+1&city=Ottawa&state=ON&zip=K1C2N6&country=CA&phone=%28555%29555-5555&firstname=&lastname=&email=&amount=1.00&type=auth&username=demo&password=password" headers = {} endpoint = endpoint.is_a?(URI) ? endpoint : URI.parse(endpoint) http = Net::HTTP.new(endpoint.host,endpoint.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE http.set_debug_output(STDOUT) result = http.post(endpoint.request_uri,body,RUBY_184_POST_HEADERS.merge(headers)) puts(result) 在Ubuntu 12.04 Ruby 1.9.3打开1.0.1我得到以下输出: % ruby test.rb opening connection to secure.mmoagateway.com... opened Conn close because of connect error Connection reset by peer - SSL_connect /usr/lib/ruby/1.9.1/net/http.rb:799:in `connect': Connection reset by peer - SSL_connect (Errno::ECONNRESET) from /usr/lib/ruby/1.9.1/net/http.rb:799:in `block in connect' from /usr/lib/ruby/1.9.1/timeout.rb:54:in `timeout' from /usr/lib/ruby/1.9.1/timeout.rb:99:in `timeout' from /usr/lib/ruby/1.9.1/net/http.rb:799:in `connect' from /usr/lib/ruby/1.9.1/net/http.rb:755:in `do_start' from /usr/lib/ruby/1.9.1/net/http.rb:744:in `start' from /usr/lib/ruby/1.9.1/net/http.rb:1284:in `request' from /usr/lib/ruby/1.9.1/net/http.rb:1307:in `send_entity' from /usr/lib/ruby/1.9.1/net/http.rb:1096:in `post' from test.rb:17:in `<main>' 使用Ruby 1.8.7,我得到正确的输出: $ruby test.rb opening connection to secure.mmoagateway.com... opened <- "POST /api/transact.php HTTP/1.1rnAccept: */*rnContent-Type: application/x-www-form-urlencodedrnConnection: closernContent-Length: 347rnHost: secure.mmoagateway.comrnrn" <- "orderid=ae5dd847d9f31209cbffeeea076ed966&orderdescription=Active+Merchant+Remote+Test+Purchase&ccnumber=4222222222222222&ccexp=0913&cvv=123&company=Widgets+Inc&address1=1234+My+Street&address2=Apt+1&city=Ottawa&state=ON&zip=K1C2N6&country=CA&phone=%28555%29555-5555&firstname=&lastname=&email=&amount=1.00&type=auth&username=demo&password=password" -> "HTTP/1.1 200 OKrn" -> "Date: Wed,04 Jul 2012 01:26:35 GMTrn" -> "Server: Apachern" -> "Content-Length: 240rn" -> "Connection: closern" -> "Content-Type: text/htmlrn" -> "rn" reading 240 bytes... -> "response=1&responsetext=SUCCESS&authcode=123456&transactionid=1648894346&avsresponse=N&cvvresponse=N&orderid=ae5dd847d9f31209cbffeeea076ed966&type=auth&response_code=100&merchant_defined_field_6=&merchant_defined_field_7=&customer_vault_id=" read 240 bytes Conn close #<Net::HTTPOK:0xb74175c8> response=1&responsetext=SUCCESS&authcode=123456&transactionid=1648894346&avsresponse=N&cvvresponse=N&orderid=ae5dd847d9f31209cbffeeea076ed966&type=auth&response_code=100&merchant_defined_field_6=&merchant_defined_field_7=&customer_vault_id= 我在1.9.3和1.0.1中有同样的问题. 如果我在我的12.04系统上安装1.0.0e从oneiric它也可以与ruby 1.9.3正常工作 我认为这可能与ubuntu的bug有关:https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371 虽然我从Debian下载了软件包,他们说它是固定的,没有运气. 有没有人遇到类似的问题? 解决方法
连接到授权网关时遇到了同样的问题.最后我能够通过强制sslv3进行连接
http = Net::HTTP.new(uri.host,uri.port) http.use_ssl = true if @is_https http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @is_https http.ssl_version = :SSLv3 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |