How I installed letsencrypt for Nginx

26 January 2016   0 comments   Linux, Web development

Powered by Fusion×

I have no problems admitting that I'm always finding SSL and certs and stuff like that confusing. And Let's Encrypt is no exception. However, with Let's Encrypt, apparently, all you need to do is download their software and run a command to get a couple of certificate files. No websites or forms to fill in. No need to create a .csr file. How hard can it be? After skimming some documentation and other blog posts I dug in. Turns out, it was quite doable.

To install it, I ran:

# pwd
# git clone
# cd letsencrypt
# pip install cryptography
# ./letsencrypt-auto

The reason I had to manually pip install cryptography was because the installer in ./letsencrypt-auto failed the first time.

Now it should be installed. To create the cert you have to temporarily stop Nginx. But I had to be quick because I don't want it to be down for long:

# /etc/init.d/nginx stop
# ./letsencrypt-auto certonly --standalone -d
# /etc/init.d/nginx start

The first time I ran this I got Error: urn:acme:error:badNonce :: The client sent an unacceptable anti-replay nonce :: JWS has invalid anti-replay nonce which, according to this discussion is easy to bypass; simply try again. So I tried again, and the second time it worked.

This time it worked! Now I have 4 new files:

# ls -l /etc/letsencrypt/live/
total 0
lrwxrwxrwx 1 root root 32 Jan 25 08:04 cert.pem -> ../../archive/
lrwxrwxrwx 1 root root 33 Jan 25 08:04 chain.pem -> ../../archive/
lrwxrwxrwx 1 root root 37 Jan 25 08:04 fullchain.pem -> ../../archive/
lrwxrwxrwx 1 root root 35 Jan 25 08:04 privkey.pem -> ../../archive/

Now add these lines to the Nginx config for that site:

listen 443;

ssl on;
ssl_certificate /etc/letsencrypt/live/;
ssl_certificate_key /etc/letsencrypt/live/;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;

The new cert I just created expires in about 2 months. I created an entry in my calendar with an alert. I think I just need to run:

# /etc/init.d/nginx stop
# ./letsencrypt-auto certonly --standalone -d
# /etc/init.d/nginx start


Thank you for posting a comment

Your email will never ever be published

Related posts

Best Atom packages of 2015 22 January 2016
hashin - a replacement for peepin 26 January 2016
Autocompeter is Dead. Long live Autocompeter! 09 January 2017
A quicksearch for Bugzilla using Autocompeter 27 January 2016
Match the whole word in auto complete maybe 10 April 2015
gulp-header is the best! 09 April 2015
Autocompeter 1.1.8 and smooth typing 06 April 2015 02 April 2015
Median size of Javascript libs on jsDelivr 24 February 2015
ssl_session_cache in Nginx and the ab benchmark 31 December 2010
SpamBayes and SSL thanks to Stunnel 17 November 2003