gem install fails with openssl failure
RubyMacosRubygemsOpensslCocoapodsRuby Problem Overview
I tried to install cocoapods (http://cocoapods.org/) on my OSX Mountain Lion.
moshe-mbp:~ moshem$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server key exchange B: bad ecpoint (https://rubygems.org/latest_specs.4.8.gz)
first I tried
rvm reinstall all --force
then I tried
brew upgrade openssl
==> Upgrading openssl
==> Downloading http://openssl.org/source/openssl-1.0.1e.tar.gz
Already downloaded: /Library/Caches/Homebrew/openssl-1.0.1e.tar.gz
==> perl ./Configure --prefix=/usr/local/Cellar/openssl/1.0.1e --openssldir=/usr/local/etc/openssl zlib-dynamic shared d
==> make
==> make test
==> make install MANDIR=/usr/local/Cellar/openssl/1.0.1e/share/man MANSUFFIX=ssl
==> Caveats
To install updated CA certs from Mozilla.org:
brew install curl-ca-bundle
This formula is keg-only: so it was not symlinked into /usr/local.
Mac OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.
The OpenSSL provided by OS X is too old for some software.
Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:
LDFLAGS: -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include
==> Summary
🍺 /usr/local/Cellar/openssl/1.0.1e: 429 files, 15M, built in 5.1 minutes
I then tried
openssl version
and still(!) gets the older version
moshe-mbp:~ moshem$ openssl version
OpenSSL 0.9.8r 8 Feb 2011
moshe-mbp:~ moshem$
what am I doing wrong? how can I install the cocoapods gem?
thanks
EDIT, trying @sean suggestion:
moshe-mbp:~ moshem$ brew update
Updated Homebrew from 672af665 to 10b4d426.
==> Updated Formulae
bash wireshark
moshe-mbp:~ moshem$ brew install openssl
Error: openssl-1.0.1e already installed
moshe-mbp:~ moshem$ brew link openssl --force
Linking /usr/local/Cellar/openssl/1.0.1e... 1139 symlinks created
moshe-mbp:~ moshem$ brew install curl-ca-bundle
Error: curl-ca-bundle-1.87 already installed
moshe-mbp:~ moshem$
moshe-mbp:~ moshem$ openssl version
OpenSSL 0.9.8r 8 Feb 2011
moshe-mbp:~ moshem$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server key exchange B: bad ecpoint (https://rubygems.org/latest_specs.4.8.gz)
EDIT (2) after fixing issues with brew doctor
moshe-mbp:~ moshem$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server key exchange B: bad ecpoint (https://rubygems.org/latest_specs.4.8.gz)
moshe-mbp:~ moshem$ openssl version
OpenSSL 0.9.8r 8 Feb 2011
moshe-mbp:~ moshem$ brew update
Updated Homebrew from 10b4d426 to 6a00bc3c.
==> Updated Formulae
clozure-cl python python3
moshe-mbp:~ moshem$ brew install openssl
Error: openssl-1.0.1e already installed
moshe-mbp:~ moshem$
moshe-mbp:~ moshem$ echo $PATH
/Users/moshem/.rvm/gems/ruby-2.0.0-p0/bin:/Users/moshem/.rvm/gems/ruby-2.0.0-p0@global/bin:/Users/moshem/.rvm/rubies/ruby-2.0.0-p0/bin:/Users/moshem/.rvm/bin:/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/tools:/platforms:/platform-tools:
moshe-mbp:~ moshem$
EDIT after altering the /etc/paths
I edited the /etc/path files to:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
closed terminal completly and reopend and it still launches the old version of openssl!
why?
moshe-mbp:~ moshem$ env $PATH
env: /Users/moshem/.rvm/gems/ruby-2.0.0-p0/bin:/Users/moshem/.rvm/gems/ruby-2.0.0-p0@global/bin:/Users/moshem/.rvm/rubies/ruby-2.0.0-p0/bin:/Users/moshem/.rvm/bin:/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/tools:/platforms:/platform-tools
EDIT, my bash_profile
source "`brew --prefix grc`/etc/grc.bashrc"
export PATH=${JAVA_HOME}/bin:$PATH
export PATH="$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platforms:$ANDROID_SDK/platform-tools:$ANDROID_NDK"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
BTW, the /etc/grc.bashrc doesn't seem to exist on my machine. both this line and the rvm line at the end were added by installed scripts
EDIT
moshe-mbp:~ moshem$ rvm pkg install openssl
Fetching openssl-1.0.1c.tar.gz to /Users/moshem/.rvm/archives
Extracting openssl to /Users/moshem/.rvm/src/openssl-1.0.1c
Configuring openssl in /Users/moshem/.rvm/src/openssl-1.0.1c.
Compiling openssl in /Users/moshem/.rvm/src/openssl-1.0.1c.
Installing openssl to /Users/moshem/.rvm/usr
Please note that it's required to reinstall all rubies:
rvm reinstall all --force
Updating openssl certificates
moshe-mbp:~ moshem$ openssl version
OpenSSL 1.0.1e 11 Feb 2013
moshe-mbp:~ moshem$ gem source -r http://rubygems.org/
http://rubygems.org/ removed from sources
moshe-mbp:~ moshem$ gem source -a https://rubygems.org/
Error fetching https://rubygems.org/:
SSL_connect returned=1 errno=0 state=SSLv3 read server key exchange B: bad ecpoint (https://rubygems.org/specs.4.8.gz)
moshe-mbp:~ moshem$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0) in any repository
Ruby Solutions
Solution 1 - Ruby
This is fixed by avoiding https and using the insecure http instead. Running this worked for me.
gem source -a http://rubygems.org/
Solution 2 - Ruby
rvm osx-ssl-certs update all
did the trick for me, ruby 2.0.0
Solution 3 - Ruby
Try using http://rubygems.org/ (without SSL) as a source — that fixed the error for me.
gem source -r https://rubygems.org/
gem source -a http://rubygems.org/
gem install cocoapods
Solution 4 - Ruby
Current release of rvm does a lot better job handling this things, run:
rvm get head
rvm reload
rvm autolibs enable
rvm reinstall 1.9.3 --disable-binary
Make sure to follow any displayed instructions - it's all there to help you.
Solution 5 - Ruby
I had the same error. To fix just run the following commands (I know you've ran some but humor me):
brew update
brew install openssl
brew link openssl --force
brew install curl-ca-bundle
After that, open a new shell or source your files and all should be good to go :)
UPDATE:
To update your paths you'll need to edit your /etc/paths file so do something like:
sudo vim /etc/paths
In there is should look something like:
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
What you want to do is to ensure that /usr/local/bin
is at the top of the file. So change it to something like:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Hope that fixes it!
Solution 6 - Ruby
UPDATE 2021-05-20: Rubygems changed the certificate they use. I've updated the link to the certificate but I have not confirmed this solution actually still works.
This is what solved it for me:
Install this certificate: https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem</del>
In this folder: {rubyfolder}\lib\ruby\x.x.x\rubygems\ssl_certs
This way you don't have to add insecure sources.
More info here: https://gist.github.com/luislavena/f064211759ee0f806c88</del> https://www.develves.net/blogs/asd/2016-04-08-rubygems-and-ssl/
Solution 7 - Ruby
If you are in China, try using http://ruby.taobao.org/ as a source — that fixed the error for me. At the same time,avoid https. Running this worked for me.
gem sources --remove https://rubygems.org/
gem sources -a http://ruby.taobao.org/
gem install cocoapods
Solution 8 - Ruby
The following got everything working for me!
rvm get stable
brew update
brew install libyaml
brew install pkg-config
brew install libxml2
brew install libxslt
brew install openssl
brew link openssl --force
brew install sqlite
brew install apple-gcc42
rvm install 2.0.0 --with-gcc=gcc-4.2
If this doesn't work, remove your existing rubygems and follow this:
rvm remove 2.0.0
rvm get head --autolibs=3
rvm requirements
#At this point, brew install anything that's missing, like apple-gcc42.
rvm install 2.0.0 --with-gcc=gcc-4.2
Solution 9 - Ruby
You can first install a newer openssl, as Mike Slutsky described. To check your openssl version:
$ openssl version
Get a more recent one here: http://www.openssl.org/source/ Then configure and install it:
$ cd openssl-1.0.1f_src/
$ ./Configure --prefix=/Users/me/bin/openssl-1.0.1f_bin darwin64-x86_64-cc
$ make install
Now configure ruby with this openssl:
$ cd ruby-2.1.0_src/
$ ./configure --with-openssl-dir=/Users/me/bin/openssl-1.0.1f_bin --prefix=/Users/me/bin/ruby-2.1.0_bin
Note: the new openssl does not need to be on you $PATH. This worked for me with ruby 2.0 and 2.1. Good luck (-:
Solution 10 - Ruby
You can try to update OpenSSL from source instead:
curl -L -O http://www.openssl.org/source/openssl-1.0.1b.tar.gz.asc
curl -L -O http://www.openssl.org/source/openssl-1.0.1b.tar.gz
gpg --verify openssl-1.0.1b.tar.gz.asc
tar xvzf openssl-1.0.1b.tar.gz
cd openssl-1.0.1b
perl ./Configure shared zlib --prefix=/opt/local darwin64-x86_64-cc
make
make test
sudo make install
Solution 11 - Ruby
I fixed it by only appending to the PATH variable in my ~/.bash_profile, which in my case meant changing
export PATH="/usr/local/mysql/bin:$PATH"
export PATH=$M2:$PATH
export PATH=$JAVA_HOME/bin:$PATH
to
export PATH="$PATH:/usr/local/mysql/bin"
export PATH=$PATH:$M2
export PATH=$PATH:$JAVA_HOME/bin
In terminal, type nano ~/.bash_profile
to start editing.