Rails控制器中发生令人讨厌的SSL证书错误,但在控制台中则不会

时间:2013-06-07 03:25:29

标签: ruby ruby-on-rails-3.2 openssl

此错误会在不同时间突然出现。这绝对是令人抓狂的,也是生产力下降的。

这是rvm ruby-1.9.3-p392Rails 3.2.13以及Pow

在控制台中,此命令有效:

response = Net::HTTP.start(url.host, url.port, :use_ssl => url.scheme == 'https') {|http| http.request(request)}

完全相同的命令,当从控制器访问时,FAILS出现此错误:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

我已经看到关于错误的 众多 帖子和答案。有很多答案,因为使用的技术堆栈非常脆弱,因为许多移动部件和证书文件的许多不同位置。但是,我还没有看到为什么它在Rails控制台中有效,而它从Rails控制器失败了。有没有人见过这样的东西?

1 个答案:

答案 0 :(得分:0)

为什么这在控制台而不是在控制器中工作仍然是一个谜。但是有很多移动部件,我决定废弃原来的rvm安装并重新开始。

许多曾经使用Mac环境一段时间的人过去曾使用过MacPorts。有些人,像我一样,已经转移到Homebrew。但是我同时保留了两个,因为有一些我无法使用Homebrew的库,我只能从MacPorts获得。我尽量避免尽可能多地从源头构建,因为我过去依赖于地狱,我需要依赖比我聪明的人。

我为解决问题所做的是将rvm设置为专门使用Homebrew,这是我以前从未做过的事情:

rvm autolibs homebrew

首先需要一个Homebrew更新:

brew update

但它会告诉你是否需要这样做,或者自动为你做。

然后我做了:

rvm install 1.9.3

这是从源代码构建的Ruby 1.9.3-p429,因为没有可用的二进制文件。

我在几个不同的地方安装了OpenSSL(MacPorts和Homebrew家庭),这可能是我原来问题的一部分。

安装顺利完成。我在1.9.3下重新创建了我的原始gemset并创建了相应的.rvmrc文件。

现在SSL_connect错误消失了。