Afin d’activer le protocole HTTPS (Port 443) sur notre serveur, un certificat délivré par une Autorité de Certification (Certificate Autority) est nécessaire. Il existe plusieurs autorités de certification auprès desquelles l’obtention d’un certificat peut couter quelques centaines d’euros par an. Mais il est également possible d’obtenir un certificat SSL gratuit facilement grâce à Let’s Encrypt.
Pour obtenir un certificat, il suffit de prouver à l’autorité de certification que nous avons le contrôle du nom de domaine à certifier. Let’s Encrypt recommande l’utilisation de CertBot afin de générer aisement un certificat. Nous allons donc détailler les différentes étapes à suivre pour arriver à cette fin.
Sans certificat SSL installé sur notre serveur pour notre domaine, lorsque l’on visite notre site à partir du navigateur, celui-ci apparait comme étant non sécurisé avec un avertissement « Not Secure » – ce qui peut effrayer nos visiteurs!
Ce guide détaille les étapes pour obtenir un certificat SSL pour un site web disposant d’un nom de domaine et hébergé sur un VPS ou Serveur dédié Ubuntu. Le certificat SSL peut être également appliqué sur les sous-domaines de notre site, comme nous le verrons.
Pour les étapes qui suivent, j’utilise un VPS Ubuntu avec un Serveur HTTP Apache.
Pré-requis:
- Disposer d’un serveur dédié ou VPS Ubuntu – vous pouvez commander un VPS chez OVH
- Avoir installé un serveur HTTP Apache
- Avoir un nom de domaine qui pointe vers notre serveur.
Installation de CertBot sur notre serveur
Commençons par installer CertBot sur notre serveur.
La documentation officielle de CertBot recommande da passer par snapd plutôt que de générer l’installation par la commande apt install cerbot. Nous allons donc premièrement obtenir snapd :
apt install snapd
Puis s’assurer que celui-ci est bien à jour :
snap install core
snap refresh core
Nous pouvons maintenant lancer la commande suivante pour installer CertBot :
snap install --classic certbot
Une fois installé, nous allons pouvoir générer les certificats pour l’ensemble de nos sites.
Génération d’un certificat SSL pour notre nom de domaine
La génération d’un certificat SSL se fait facilement à l’aide de la commande suivante :
certbot --apache -d domaine1.com -d domaine2.com -d site1.domaine1.com
On peut en une seule commande donner autant de domaines ou sous-domaines pour lesquels on souhaite obtenir un certificat SSL, à conditions que ces derniers soient accessibles et redirigent bien vers notre serveur.
Une adresse mail nous est demandée, ainsi que d’accepter plusieurs conditions pour l’utilisation du service, et les certificats sont générés (ainsi que de nouveaux fichiers conf Apache destinés au SSL + redirection HTTP vers HTTPS).
On teste alors dans notre navigateur et:
Notre site est désormais sécurisé! Ainsi que l’ensemble des sous-domaines pour lesquels nous avons généré un certificat!
Les certificats sont générés avec une validité de 3 mois, à expiration il sera nécessaire de les renouveller. Mais lors de son installation, CertBot a déjà mis en place un timer cron pour automatiser ce renouvellement, on pourra vérifier cela dans la liste des timers actifs sur notre serveur :
systemctl list-timers
Sun 2021-01-17 17:31:00 UTC 7h left Sun 2021-01-17 09:33:23 UTC 55min ago snap.certbot.renew.timer snap.ce>
Plus sur CertBot: Documentation de CertBot (En Anglais)