Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 1.9.3的OpenSSL问题_Ruby_Openssl_Ruby 1.9.3_Ubuntu 12.04 - Fatal编程技术网

Ruby 1.9.3的OpenSSL问题

Ruby 1.9.3的OpenSSL问题,ruby,openssl,ruby-1.9.3,ubuntu-12.04,Ruby,Openssl,Ruby 1.9.3,Ubuntu 12.04,我在Ubuntu 12.04上使用OpenSSL 1.0.1+Ruby 1.9.3时遇到了一个半严重的问题 所有红宝石均安装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-for

我在Ubuntu 12.04上使用OpenSSL 1.0.1+Ruby 1.9.3时遇到了一个半严重的问题

所有红宝石均安装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=4111111111111111&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+Openss 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 test.rb
正在打开与secure.mmoagateway.com的连接。。。
开的
连接因连接错误而关闭对等连接重置-SSL\U connect
/usr/lib/ruby/1.9.1/net/http.rb:799:in'connect':由对等方重置连接-SSL\u 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'
来自测试。rb:17:in`'
使用Ruby 1.8.7,我获得了正确的输出:

$ ruby test.rb
opening connection to secure.mmoagateway.com...
opened
<- "POST /api/transact.php HTTP/1.1\r\nAccept: */*\r\nContent-Type: application/x-www-form-urlencoded\r\nConnection: close\r\nContent-Length: 347\r\nHost: secure.mmoagateway.com\r\n\r\n"
<- "orderid=ae5dd847d9f31209cbffeeea076ed966&orderdescription=Active+Merchant+Remote+Test+Purchase&ccnumber=4111111111111111&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 OK\r\n"
-> "Date: Wed, 04 Jul 2012 01:26:35 GMT\r\n"
-> "Server: Apache\r\n"
-> "Content-Length: 240\r\n"
-> "Connection: close\r\n"
-> "Content-Type: text/html\r\n"
-> "\r\n"
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=
$ruby test.rb
正在打开与secure.mmoagateway.com的连接。。。
开的
日期:2012年7月4日星期三01:26:35 GMT\r\n
->“服务器:Apache\r\n”
->“内容长度:240\r\n”
->“连接:关闭\r\n”
->“内容类型:text/html\r\n”
->“\r\n”
正在读取240字节。。。
->“response=1&responsetext=SUCCESS&authcode=123456&transactionid=1648894346&avsresponse=N&cvvrresponse=N&orderid=AE5DD847D9F31209CBFFEEA076ED966&type=auth&response\u code=100&merchant\u defined\u field\u 6=&merchant\u defined\u field\u 7=&customer\u vault\u id=”
读取240字节
控制室关闭
#
response=1&responsetext=SUCCESS&authcode=123456&transactionid=1648894346&avsresponse=N&cvvrresponse=N&orderid=AE5DD847D9F31209CBFFEEA076ED966&type=auth&response\u code=100&merchant\u defined\u field\u 6=&merchant\u defined\u field\u 7=&customer\u vault\u id=
我在1.9.3和1.0.1的arch中也有同样的问题

如果我在我的12.04系统上从oneiric安装1.0.0e,它也可以与ruby 1.9.3配合使用

我认为这可能与ubuntu bug有关:

虽然我从Debian下载了这些软件包,他们说它已经修复了,没有运气


还有其他人遇到过类似的问题吗?

我也有同样的问题。。。信息是,
rvm pkg安装openssl
rvm重新安装1.9.3-p194——使用openssl dir=~/.rvm/usr
解决了问题,但对我没有帮助

我在连接授权网关时遇到了同样的问题。最后,我通过强制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

我没有修复程序,只有一些数据点:问题在我的机器上重现(Debian测试、Ruby 1.8.7或1.9.3、openssl 1.0.1b-1)。如果我尝试连接到其他https主机,则问题不会重现。哦,我不确定bug报告中的症状是否与您的症状非常匹配。是的,这只在OSX主要版本升级以及brew/macports/的相关问题之后对我有效。。。在这种情况下,它可能有助于重新安装ruby。也许他在编译ruby 1.9之后更新了openssl,但对我来说仍然不起作用。我有最新的基于linux系统的1.0.1,rvm openssl也完全一样,我尝试了所有可能的解决方案,没有为我解决。。。有什么想法吗?
--使用openssl目录=…
对于1.9.3来说不是有效的配置选项:
配置:警告:无法识别的选项:--使用openssl目录
我已经有一段时间没有检查这篇文章了。对这对我有用。似乎它应该能够自行协商此问题,但这将解决我的问题。下面是一个解决方案,它可以在不禁用证书验证的情况下修复此问题