As I have started my adventure in Clojure programming I wanted to start playing with the leiningen tool.
Unfortunately where I was at has some strict policies around access. We have this crazy proxy so we had to do some magic to get it working. Since I haven't done any Java development in while I was lucky that I had a great friend at work to help me.
I was trying to get lein working and was getting the following error:
Could not transfer artifact clojure-complete:clojure-complete:pom:0.2.3 from/to clojars (https://clojars.org/repo/): peer not authenticated
This could be due to a typo in :dependencies or network issues.
If you are behind a proxy, try setting the 'http_proxy' environment variable.
To get this to work we needed to do:
1. We need to get the certificate:
echo -n | openssl s_client -connect clojars.org:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/clojars.cert
2. Import the key that we just extracted:
sudo keytool -importcert -alias 'clojars_cert' -file /tmp/clojars.cert -keystore $(find $JAVA_HOME -name cacerts)
3. Make sure the key is there:
sudo keytool -list -v -keystore $(find $JAVA_HOME -name cacerts) | grep clojars
When you run the lein command it should work.
Hopefully this helps someone else in the future.