OpenSSL and Ruby Compatibility Table

Published by Moncef Belyamani on

Every day, hundreds of people struggle to install Ruby. One of the most common reasons is that the wrong version of OpenSSL is being used. Most people don’t realize that certain Ruby versions only work with certain versions of OpenSSL.

And most people shouldn’t have to know this! If you’re reading this, you probably care a lot more about being able to run your Ruby project. To make things more complicated, there are various tools you can use to install Ruby, but they all work in different ways. Some are more helpful than others.

This is why I built Ruby on Mac. All you have to do is run a single command in your terminal, and it will take care of everything else for you. It automatically fixes common issues, and uses the correct settings and OpenSSL version depending on the Ruby version, your Mac model, the macOS version, the Xcode/command line tools version, and other factors that can affect Ruby installation.

If you prefer to use one of the free version managers (asdf, chruby, rbenv, rvm), where you might need to manually specify the OpenSSL version, below is a handy chart that shows you which Ruby versions support which versions of OpenSSL.

Note that Ruby versions less than 3.0.7, and OpenSSL versions less than 3.0 have reached end of life, so it’s best to use Ruby versions 3.1.5 and higher, since they’re the only ones that support OpenSSL 3.x.

Also, note that although you can install Ruby versions 3.1+ with OpenSSL 1.1, I don’t recommend it because OpenSSL 1.1 has been deprecated since September 11, 2023, which means it’s vulnerable to bugs and security issues. OpenSSL 3 has a lot of improvements that you would want to take advantage of.

Ruby version Supported OpenSSL versions Ruby Version Support Status
3.3.x >= 1.1, 3.0+ preferred Maintained
3.2.x >= 1.1, 3.0+ preferred Maintained
3.1.x >= 1.1, 3.0+ preferred Maintained
3.0.x >= 1.1, < 3.0 Maintained until 3/31/24
2.7.x >= 1.1, < 3.0 End of Life
2.6.x >= 1.1, < 3.0 End of Life
2.5.x >= 1.1, < 3.0 End of Life
2.4.x >= 1.1, < 3.0 End of Life
2.3.x >= 1.0, < 1.1 End of Life
2.2.x >= 1.0, < 1.1 End of Life
2.1.x >= 1.0, < 1.1 End of Life
2.0.x >= 1.0, < 1.1 End of Life
1.9.x >= 1.0, < 1.1 End of Life