Fixing SSL_connect error while installing Ruby Gems on Windows

As Windows is my primary development machine, I did a setup of Jekyll by following this guide by Julian Thilo. However, I ran into SSL_connect issues while installing the Jekyll gem.

After some research, I found out that this is an issue in Ruby and I would need to manually specify an SSL certificate file. In this post I will share the specific steps I took to resolve this SSL_connect error on my Windows machine.

Ruby SSL_connect error on Windows

After installing Ruby and Ruby Dev Kit on my machine, I ran the command gem install jekyll, however on first try it produced the following error:

> gem install jekyll
ERROR: Could not find a valid gem 'jekyll' (>= 0), here is why: 
Unable to download data from https://rubygems.org/ 
- SSL_connect returned=1 errno=0 state=SSLv3 read
server certificate B: certificate verify failed 
(https://rubygems.org/latest_specs.4.8.gz)

The reason why this error occurs and how to resolve it has been explained in detail by Fletcher Nichol in this gist. Find below the exact steps I took to resolve this SSL certificate verification failure on Windows.

Fixing SSL_connect error on Windows

  • Download the cacert.pem file and save this file to C:\Rails\Installer\cacert.pem
  • Open System in Control Panel
  • Go to Advanced System Settings
  • Click on Environment Variables
  • Define a new System Variable with SSL_CERT_FILE=C:\Rails\Installer\cacert.pem as shown in screen-shot below
  • Close and reopen your command prompt for allowing the changes to take place

SSL Certificate on Windows

Specifying SSL_CERT_FILE on Windows for Ruby

Now we have the SSL certificate file defined permanently in our System settings. This will allow us to install Ruby gems without anymore SSL errors. You should be able to install Jekyll as well as other Ruby gems such as Rouge, Bundle etc. In case you find the install command to be stuck for long time try running the following command to get a more verbose output.

gem install jekyll --debug -V

Hope you found this post useful and will be able to setup Jekyll on your Windows machine. :)

28 thoughts on “Fixing SSL_connect error while installing Ruby Gems on Windows”

  1. You said save it to – C:RailsInstallercacert.pem

    So is that path or file name and Is it necessary to save only to that path?

    Reply
    • Hi Kiran,

      That is a path and you can save it to any location. Just make sure to set the value of SSL_CERT_FILE to the location where you save the pem file.

      Reply
  2. Hello Kanishk Kunal.
    when ever i run the command “gem install rails”, i always get this error.

    ERROR: Could not find a valid gem ‘rails’ = 0>, here is why: Unable to download data from https://rubygems.org/ – SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

    i tried out the solution you gave above but i still get the same error message. please kindly help me out.

    Reply
    • Hi Amos,

      Please make sure you have correct path set for SSL_CERT_FILE.
      You can check whether you have correct environment variable set or not by running the following command in your command prompt.

      echo %SSL_CERT_FILE%

      This should output the location where your cert files are stored.

      Reply
  3. Thanks for this trick. My derivative solution for my standard ruby installation (simply installed using rubyinstaller on win10 64 bits) :
    Just place the “cacert.pem” in the “rubygems/ssl_certs/” directory (in C:\ruby23-x64\lib\2.3.0 for my own installation) and that’s all.

    Reply
  4. Hi I am getting the below issue
    ERROR: SSL verification error at depth 2: unable to get local issuer certificate (20)
    ERROR: You must add /C=US/O=BlueCoat Systems, Inc./CN=Cloud Services Root CA to your local trusted store
    ERROR: Could not find a valid gem ‘compass’ (>= 0), here is why:
    Unable to download data from https://rubygems.org/ – SSL_connect returned=1 errno=0 peeraddr=151.101.1.227:443 state=error: certificate verify failed (unable to get local issuer certificate) (https://rubygems.org/specs.4.8.gz)

    Is there anything you can help me with

    Reply

Leave a Reply