Let's Encrypt!
This is out of date, certbot can install on nginx automatically and will handle cert renewals.
Since my readership is pratically zero, I doubt anyone has noticed, but this site now runs with a brand spanking new cert from Let's Encrypt! If you're running Apache, the process to get this setup is automated and just takes a few commands.
However, if you're running nginx like myself, then you're going to have to work a little.
Installing Let's Encrypt does not change from its documentation, though when you goto obtain a cert you will need to use the ./letsencrypt-auto certonly --standalone
command in order to config and download the cert files. Do not forget to list your non-www domain and www domain, i.e., joshruppe.com and www.joshruppe.com.
After you have the files, make note of the directory they are placed in (/etc/letsencrypt/live/domain.com/). Now you need to edit the nginx configuation file under /etc/nginx/sites-available/. If you have another configuration, you can tell which is active by going to /etc/nginx/sites-enabled/ the symlink there will be for the active config.
Open that file and comment out the below:
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
and add this:
listen 443 ssl;
server_name domain.com www.domain.com;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
In the same file, outside of the original server block. Add the below to redirect port 80 traffic to your new HTTPS enabled site:
server {
listen 80;
server_name domain.com;
return 301 https://$host$request_uri;
}
Once that is finished simply run service nginx restart
and you should see an awesome https:// in front of your domain. Keep in mind you will need to renew your Let's Encrypt cert every 90 days. You can easily create a cron job to take care of this though.