Introduction
In case you haven't realized already, encryption is important. For the web, that means using SSL certificates to secure web traffic. Recently, Mozilla and Google have gone as far as to mark sites without SSL certificates as insecure in Firefox and Chrome.
In order to bring the Web up to speed with encryption, the Linux Foundation along with the Electronic Frontier Foundation and many others created LetsEncrypt. LetsEncrypt is a project designed to allow users access to free SSL certificates for their websites. To date, LetsEncrypt has issued millions of certificates and is a resounding success.
Making use of LetsEncrypt is easy on Debian, especially when using the Certbot utility from the EFF.
Operating System
- OS: Debian Linux
- Version: 9 (Stretch)
Installing for Apache
Certbot has a specialized installer for the Apache server. Debian has this installer available in its repositories.# apt install python-certbot-apacheThe package provides the
certbot
command. The Apache plugin interfaces with the Apache server to discover information about your configurations and the domains that it is generating certificates for. As a result, generating your certificates requires only a short command. # certbot --apacheCertbot will generate your certificates and configure Apache to use them.
The UAF Geophysical Institute, is looking for an experienced Linux Systems Analyst to join their team of research cyber infrastructure analysts and engineers. LOCATION: Fairbanks, Alaska, USA
APPLY NOW
Installing for Nginx
Nginx requires a bit more manual configuration. Then again, if you use Nginx, you're probably used to manual configurations. In any case, Certbot is still available for download through Debian's repositories.# apt install certbotThe Certbot plugin is still in alpha, so using it isn't really recommended. Certbot does have another utility called "webroot" that makes installing and maintaining certs easier. To obtain a certificate, run the command below, specifying your web root director and any domains that you want covered by the cert.
# certbot certonly --webroot -w /var/www/site1 -d site1.com -d www.site1.com -w /var/www/site2 -d site2.com -d www.site2.comYou can use one cert for multiple domains with one command.
Nginx will not recognize the certs until you add them to your configuration. Any SSL certificates need to be listed withing the
server
block for their respective website. You must also specify within that block that the server must listen on port 443
and use SSL. server { listen 443 default ssl; # Your # Other ssl_certificate /path/to/cert/fullchain.pem ssl_certificate_key /path/to/cert/privkey.pem # Config # Lines }Save your configuration and restart Nginx for the changes to take effect.
# systemctl restart nginx
Auto-Renew with Cron
Whether you're using Apache or Nginx, you will need to renew your certificates. Remembering to do so can be a pain, and you definitely don't want them to lapse. The best way to handle renewing your certificates is to create a cron job that runs twice a day. Twice daily renewals are recommended because they guard against certificates lapsing due to revocation, which can happen from time to time. To be clear, though, they don't actually renew each time. The utility check if the certs are out of date or will be within thirty days. It will only renew them if they meet the criteria.First, create a simple script that runs Certbot's renewal utility. It's probably a good idea to put it in your user's home directory or a scripts directory so it doesn't get served.
#! /bin/bash certbot renew -qDon't forget to make the script executable too.
$ chmod +x renew-certs.shNow, you can add the script as a cron job. Open up your crontab and add the script.
# crontab -e
* 3,15 * * * /home/user/renew-certs.shOnce you exit, the script should run every day at 3 a.m. and 3 p.m. by the server's clock.