$ brew install openssl
Warning: openssl-1.0.2a-1 already installed
$ openssl version
OpenSSL 0.9.8zd 8 Jan 2015
$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 1.0.1j 15 Oct 2014
$ rvm -v
rvm 1.26.11 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
我发现openssl版本之间存在很多差异。 Homebrew认为它在1.0.2a-1
上,openssl本身认为它在0.9.8zd
上,而Ruby认为它在1.0.1j
上。我甚至不知道其中任何一个是否真的是最新的!
如何解决这种差异并让Ruby使用正确版本的OpenSSL?它使用错误版本的事实阻止我使用安全API。
答案 0 :(得分:13)
使用HomeBrew安装OpenSSL不会立即将其作为默认的OpenSSL链接。
首先,让我们检查您使用的是哪个版本(7月10日,&#39; 15最新版本为1.0.2d):
openssl version -a
which openssl
ruby -r openssl -e 'puts OpenSSL::OPENSSL_VERSION'
现在,让我们确保将OpenSSL升级到最新版本:
brew update
brew install openssl
brew unlink openssl
brew link --force openssl
如果再次运行初始检查,您应该看到前两个指向新安装的OpenSSL。 Ruby很可能仍然指向旧的,因为它是用它编译的。
如果它指向旧版本,请让我们重新编译Ruby并将其指向新版本。并且为了确保它将使用正确的版本,让我们传递OpenSSL前缀 - 尽管由于我们链接了自制软件的OpenSSL,因此不需要这样做。
rvm get stable
rvm install ruby-2.1.6 --with-openssl-dir=`brew --prefix openssl`
(或rvm reinstall
如果你已经在使用2.1.6)
这应该这样做。