SSL certificates can be intimidating but Heroku and DNSimple make the process easy. The following steps should take us less than 15 minutes.
Buy the SSL certification from DNSimple
Buy a wildcard certificate from
DNSimple. The wildcard (*
) lets us use
the same certificate on staging, production, and any other future subdomains
(api, etc.).
Prepare the SSL certificate
Follow the wildcard certificate
instructions
to get .pem
, .crt
, and .key
files prepared.
Follow these
instructions
to complete .key
preparation, provision the SSL addon from Heroku, and add the
certificate to Heroku:
heroku certs:add server.crt server.key
Replace it with:
heroku certs:add *.{pem,crt,key}
Otherwise, we might see an error like:
Updating SSL Endpoint myapp.herokussl.com for [heroku-app]... failed
! Internal server error.
Get SSL endpoint from Heroku
Run:
heroku certs
This provides us the correct end point for the SSL enabled domain. This is a
domain that looks like tokyo-2121.herokussl.com
.
Add Heroku SSL endpoint to DNSimple
Next, go to our DNSimple dashboard and update/add the CNAME record for the SSL
enabled domain to point to (e.g.) tokyo-2121.herokussl.com
.
Prepare Rails app
Make a one-line configuration change in our staging and production environment config files within our Rails app:
# config/environments/{staging,production}.rb
config.force_ssl = true
Deploy that change.
Now, if users type “ourdomain.com”, they should be redirected to “https://www.ourdomain.com” and our browser’s URL bar should display its appropriate indicator (perhaps a green lock) declaring the SSL certificate is valid.
What’s next
Read our production checklist to see a full list of things, including SSL, that should be done before an application goes live.