Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you enable https and http->https redirects in ring / compojure

I am developing a RESTful app, for which I need to redirect requests coming in from an http address to it's https equivalent. I cannot seem to be able to enable https using ring/compojure.

Anyone have some useful tutorials and/or links? I haven't found any.

The documentation doesn't have anything useful either.

like image 599
dsm Avatar asked Aug 25 '13 19:08

dsm


2 Answers

Its very simple. If you want to enable HTTPS support in your web app, just do the following:

  1. Generate a Java KeyStore(.jks) file using a linux tool called keytool.
  2. In the ring map of your project.clj file, add the following:
    {
      :ssl? true
      :ssl-port 8443
      :keystore "path to the jks file"
      :key-password "the keystore password"
    }
    
  3. Fire up the server. Now your web app is HTTPS enabled.

I had a similar problem while I was trying to test my Sign-In using Social Media code which obviously had to authenticate over HTTPS and this did the trick for me.

like image 152
Punit Naik Avatar answered Nov 07 '22 20:11

Punit Naik


It's possible to serve HTTPS with clojure, but it's much more popular to put nginx or something like that in front of your ring server. If you can figure out how to configure jetty, though, run-jetty clearly supports SSL.

like image 41
amalloy Avatar answered Nov 07 '22 19:11

amalloy