
How To Enable SSL For Rails Development Environment In Two Minutes
We recently migrated a Rails application from non SSL to SSL. Before deploying to the staging we obviously wants to test everything locally in development environment. And there is not surprise that enabling SSL in Ruby on Rails development environment is easy. I will show you how we can enable SSL on thin server.
Here are the four simple step to enable SSL locally
- Create a self-signed Certificate
- Install Thin
- Configure the application for HTTPS
- Boot Thin
Create a self-signed Certificate
Create .ssl directory in the rails app and create a certificate with name localhost in that directory. This is to make your browser believe the certificate is owned by the localhost domain.
$ mkdir .ssl
$ openssl req -new -newkey rsa:2048 -sha1 -days 365 -nodes -x509 -keyout .ssl/localhost.key -out .ssl/localhost.crt
This will create localhost.crt
and localhost.key
files in the .ssl
directory.
Install Thin
Install thin is super easy. Add thin and remove webrick to your Gemfile file and bundle.
# add this to your gem file
gem ‘thin’
Configure the application for HTTPS
By default the app is configured for HTTP. To serve the application configure the force_ssl option in application.rb which has false as default value.
You can turn this feature on in specific environment (i.e. test, production, and application) by setting the value to true in the environment file. e.g,
# config/environments/production.rb
MyApp::Application.configure do
config.force_ssl = true
end
Note: Restart the server to apply the change.
To apply the HTTPs across the environments, set force_ssl to true in application.rb.
# config/application.rb
module MyApp
class Application < Rails:: Application
config.force_ssl = true
end
end
Once SSL is enabled, the framework will perform the following actions.
- All cookies set by the application are flagged as secure
- All HTTP request will be redirected to HTTPS
Cool! isn’t it?
Boot Thin server
You need to mention key and certificate path while starting the thin server
$ thin start - ssl - ssl-key-file ~/.ssl/localhost.key - ssl-cert- file ~/.ssl/localhost.crt
One can also start thin with two diffrent port one with non-SSL and another with SSL by using -p. Super cool!
$ thin start -p 3000
$ thin start -p 3001 - ssl - ssl-key-file ~/.ssl/localhost.key - ssl-cert- file ~/.ssl/localhost.crt
That’t it! Thank you for reading.
At BoTree Technologies, we build enterprise applications with our RoR team of 30+ engineers.
We also specialize in RPA, AI, Python, Django, JavaScript and ReactJS.
Consulting is free – let us help you grow!
