我有一个配备
的项目ruby 2.1.0
Rails 4.0.0
OpenSSL 1.0.1e
Linux Ubuntu-1310-saucy-64-minimal 3.11.0-15-generic #23-Ubuntu SMP Mon Dec 9 18:17:04 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Apache/2.4.6 (Ubuntu)
我正在使用Paypal Express结帐按钮,并收到Paypal的警告,提示我未按要求使用TLS1.2,但使用的是旧版本。
因此,在发现一些问题之后,我添加了一个初始化程序,以强制ruby像这样使用TLS 1.2
OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ssl_version] = :TLSv1_2
现在,如果我拨打电话,则根据paypal来测试项目是否符合要求
$ ruby -r'net / http'-e'puts Net :: HTTP.get(URI(“ https://tlstest.paypal.com/”))'
直接从我的终端服务器上,我从Paypal收到错误,我的TLS版本未更新。 如果我从Rails控制台运行相同的内容,Paypal表示还可以。
require 'net/http'
=> false
2.1.0 :003 > puts Net::HTTP.get(URI("https://tlstest.paypal.com/"))
PayPal_Connection_OK
更奇怪的是,如果我在rest客户端gem上运行命令,则在rails控制台中出现证书错误:
Loading production environment (Rails 4.0.0)
2.1.0 :001 > puts JSON.parse(RestClient.get('https://tlstest.paypal.com/').to_str)
/home/amministratore/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/http.rb:920: warning: exception in verify_callback is ignored
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
所以我的问题是:哪个是正确的版本?我的意思是我应该做更多事情还是应该没问题?
先谢谢了。