In order to install Certbot on your server, follow the next steps: (make sure you have “git” installed on your system)
$sudo apt-get install git (if not previously installed) $cd /opt $sudo git clone https://github.com/certbot/certbot
Running the above commands will download the Certbot latest release from their git repo in the /opt folder. Then we need to stop any service that might be using port 80 on our server, since the installation type we will be performing on this tutorial is the “standalone” type described on the Cerbot documentation, there are other ways to install the certificates, it is up to your preference.
Since this tutorial is about Pound, we are assuming the daemon is already installed so we need to stop it:
$sudo service pound stop
once the service is stopped, run:
$cd /opt/certbot $sudo ./letsencrypt-auto --text --email YOUR@EMAIL -d YOUR_DOMAIN --agree-tos --standalone certonly
by default, running the command above will generate the necessary key files (*.pem) in the following folder:
now, we need to create a private key file that Pound can understand, to do so run the following:
$sudo cat /etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem > /etc/ssl/YOUR_DOMAIN.pem
doing so, will concatenate the privkey.pem file and the fullchain.pem file generated by Cerbot into a single file that will be stored into your ssl certificates folder, this is very important!
In order to enable your certificate we need to edit the Pound configuration file and add the entry for it:
$sudo nano /etc/pound/pound.cfg
on the HTTPS section add:
And thats pretty much it, you can start Pound back again:
$sudo service pound start
and your domain will be secured by Let’s Encrypt! Keep in mind that these certificates have an expiration period of 90 days, so you might have to manually renew using Cerbot each certificate, in order to avoid this process, you can automate it by adding a cron task that will auto renew your certificates for you. To do so, run the following commands:
$sudo nano /etc/cron.monthly/letsencrypt
and add the following:
#!/usr/bin/env bash cd /opt/certbot ./certbot-auto renew \ --noninteractive \ --pre-hook "service pound stop" \ --post-hook "service pound start"
Here is a nice sh script you can use to register multiple domains with pound:
Here’s a complete tutorial including certificate auto renew: