Back to: Technology Guides

How to install an SSL Certificate with certbot on Ubuntu and Apache

SSL Certificates are an essential part of any website or web application, and are vital for protecting the privacy and security of your users.

They encrypt the data sent between a web server and a browser, securing data against interception, and verifying the website's identity to ensure that it is legitimate.

Fortunately, you can easily install a Let's Encrypt certificate for free on your server thanks to their certbot script. Before we begin, be sure to have your DNS set up properly.

In our case, we are going to set this up for the following domains:

  • https://example.ca

  • https://www.example.ca

The Certbot script runs off of the snapd bundle manager. This bundle manager is already pre-installed with Ubuntu 18.04 and above. If you are not sure if it is, it's always good to double check:

First, let's make sure our package manager is up to date.

sudo apt update

Now, we check if snapd is already installed and install it if it hasn't already been.

sudo apt install snapd

After installing snapd, we update it to the latest version and restart it.

sudo snap install core sudo snap refresh core

Now, we can install certbot.

sudo snap install --classic certbot

Prepare the certbot command, so it can be ran from the command line.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Finally, we run de certbot command to start the script and follow the instructions on screen.

sudo certbot --apache

On the first activation of Certbot, it will ask you to register an email address with this installation. They use this email to send any urgent messages concerning your certificate.

sudo certbot --apache Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): admin@example.ca

It will ask you to read the Terms of Service and agree in order to continue.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must agree in order to register with the ACME server. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: y

The next prompt is for promotional emails, and it is up to you.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: y

Finally, we want to activate both names, so we're just going to press ENTER.

Which names would you like to activate HTTPS for? We recommend selecting either all domains, or all domains in a VirtualHost/server block. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: example.ca 2: www.example.ca - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel):

There we go, if there is no connection error and your DNS is pointing to the correct server for the domains. The SSL Certificate activation should go as planned.

Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/example.ca/fullchain.pem Key is saved at: /etc/letsencrypt/live/example.ca/privkey.pem This certificate expires on 2023-03-12. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for example.ca to /etc/apache2/sites-available/000-default-le-ssl.conf Successfully deployed certificate for www.example.ca to /etc/apache2/sites-available/000-default-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://example.ca and https://www.example.ca - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

A redirect from HTTP to HTTPS is also added into the Apache configuration files for the webserver. You can now visit your website to confirm that everything is working and secured.

Let's get started today