Linux SSL Let's Encrypt
Let’s Encrypt est une autorité de certification (CA) qui facilite l'obtention et l'installation de certificats TLS/SSL gratuits, permettant ainsi le cryptage HTTPS sur les serveurs web. Il simplifie le processus en fournissant un logiciel client, Certbot, qui tente d'automatiser la plupart (sinon la totalité) des étapes requises. Actuellement, l'ensemble du processus d'obtention et d'installation d'un certificat est entièrement automatisé sur Apache et Nginx.
Dans ce guide, nous utiliserons Certbot pour obtenir un certificat SSL gratuit pour Apache sur Ubuntu 20.04, et nous nous assurerons que ce certificat est configuré pour se renouveler automatiquement.
Étape 1 — Installation de Certbot
Pour obtenir un certificat SSL avec Let’s Encrypt, nous devons d'abord installer le logiciel Certbot sur votre serveur. Nous utiliserons pour cela les dépôts de packages Ubuntu par défaut.
Nous avons besoin de deux packages : certbot, et python3-certbot-apache. Ce dernier est un plugin qui intègre Certbot à Apache, permettant d'automatiser l'obtention d'un certificat et la configuration HTTPS au sein de votre serveur web avec une seule commande.
sudo apt install certbot python3-certbot-apache
Vous serez également invité à confirmer l'installation en appuyant sur Y, puis sur ENTER.
Certbot est maintenant installé sur votre serveur. Dans l'étape suivante, nous allons vérifier la configuration d'Apache pour nous assurer que votre hôte virtuel est correctement configuré. Ainsi, le script client certbot pourra détecter vos domaines et reconfigurer votre serveur web pour utiliser automatiquement votre nouveau certificat SSL généré.
Étape 2 — Vérification de la configuration de votre hôte virtuel Apache
Afin de pouvoir obtenir et configurer automatiquement le SSL pour votre serveur web, Certbot doit trouver le bon hôte virtuel dans vos fichiers de configuration Apache. Le(s) nom(s) de domaine de votre serveur sera récupéré à partir des directives ServerName et ServerAlias définies dans votre bloc de configuration VirtualHost.
Si vous avez suivi l'étape de configuration de l'hôte virtuel dans le tutoriel d'installation d'Apache, vous devriez avoir un bloc VirtualHost configuré pour votre domaine à /etc/apache2/sites-available/your_domain.conf avec les directives ServerName et ServerAlias déjà définies de manière appropriée.
Pour vérifier cela, ouvrez le fichier d'hôte virtuel de votre domaine à l'aide de nano ou de votre éditeur de texte préféré :
sudo nano /etc/apache2/sites-available/your_domain.conf
Trouvez les lignes ServerName et ServerAlias existantes. Elles devraient ressembler à ceci :
... ServerName your_domain ServerAlias www.your_domain ...
Si vous avez déjà configuré votre ServerName et ServerAlias de cette manière, vous pouvez quitter votre éditeur de texte et passer à l'étape suivante. Si vous utilisez nano, vous pouvez sortir en tapant CTRL+X, puis Y et ENTER pour confirmer.
Si la configuration actuelle de votre hôte virtuel ne correspond pas à l'exemple, mettez-la à jour en conséquence. Lorsque vous avez terminé, sauvegardez le fichier et quittez l'éditeur. Ensuite, exécutez la commande suivante pour valider vos modifications :
sudo apache2ctl configtest
Vous devriez obtenir Syntax OK en guise de réponse. Si vous obtenez une erreur, rouvrez le fichier de l'hôte virtuel et vérifiez s'il y a des fautes de frappe ou des caractères manquants. Une fois que la syntaxe de votre fichier de configuration est correcte, rechargez Apache pour que les modifications prennent effet :
sudo systemctl reload apache2
Grâce à ces changements, Certbot sera en mesure de trouver le bloc VirtualHost correct et de le mettre à jour.
Ensuite, nous allons mettre à jour le pare-feu pour permettre le trafic HTTPS.
Étape 3 — Obtention d'un certificat SSL
Première façons
Certbot propose différents moyens d'obtenir des certificats SSL par le biais de plugins. Le plugin Apache se chargera de reconfigurer Apache et de recharger la configuration chaque fois que nécessaire. Pour utiliser ce plugin, tapez ce qui suit :
sudo certbot --apache
Ce script vous invitera à répondre à une série de questions afin de configurer votre certificat SSL. Tout d'abord, il vous demandera une adresse électronique valide. Cette adresse électronique sera utilisée pour les notifications de renouvellement et les avis de sécurité :
Output Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): you@your_domain
Après avoir fourni une adresse électronique valide, appuyez sur ENTER pour passer à l'étape suivante. Vous serez ensuite invité à confirmer si vous acceptez les conditions d'utilisation du service Let’s Encrypt. Vous pouvez confirmer en appuyant sur A et ensuite sur ENTER :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A
Ensuite, il vous sera demandé si vous souhaitez partager votre adresse électronique avec l'Electronic Frontier Foundation pour recevoir des nouvelles et d'autres informations. Si vous ne souhaitez pas vous abonner à leur contenu, tapez N. Sinon, tapez Y. Ensuite, appuyez sur ENTER pour passer à l'étape suivante.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing 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: N
La prochaine étape vous invitera à informer Certbot des domaines pour lesquels vous souhaitez activer le HTTPS. Les noms de domaine listés sont obtenus automatiquement à partir de la configuration de votre hôte virtuel Apache, c'est pourquoi il est important de s'assurer que vous avez les paramètres ServerName et ServerAlias corrects configurés dans votre hôte virtuel. Si vous souhaitez activer le HTTPS pour tous les noms de domaine répertoriés (recommandé), vous pouvez laisser l'invite vide et appuyer sur ENTER pour continuer. Sinon, sélectionnez les domaines pour lesquels vous souhaitez activer le HTTPS en énumérant chaque numéro approprié, séparé par des virgules et/ou des espaces, puis appuyez sur ENTER.
Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: your_domain 2: www.your_domain - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel):
Vous verrez une sortie de ce type :
Obtaining a new certificate Performing the following challenges: http-01 challenge for your_domain http-01 challenge for www.your_domain Enabled Apache rewrite module Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/your_domain-le-ssl.conf Enabled Apache socache_shmcb module Enabled Apache ssl module Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf Enabling available site: /etc/apache2/sites-available/your_domain-le-ssl.conf Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf
Ensuite, vous serez invité à choisir si vous voulez ou non que le trafic HTTP soit redirigé vers le HTTPS. En pratique, cela signifie que lorsqu'une personne visite votre site web par des canaux non cryptés (HTTP), elle sera automatiquement redirigée vers l'adresse HTTPS de votre site web. Choisissez 2 pour activer la redirection, ou 1 si vous souhaitez conserver HTTP et HTTPS comme méthodes distinctes d'accès à votre site web.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Après cette étape, la configuration de Certbot est terminée, et les dernières remarques sur votre nouveau certificat vous seront présentées, ainsi que l'emplacement des fichiers générés et la manière de tester votre configuration à l'aide d'un outil externe qui analyse l'authenticité de votre certificat :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://your_domain and https://www.your_domain You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=your_domain https://www.ssllabs.com/ssltest/analyze.html?d=www.your_domain - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your cert will expire on 2020-07-27. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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
Votre certificat est maintenant installé et chargé dans la configuration d'Apache. Essayez de recharger votre site web en utilisant https:// et remarquez l'indicateur de sécurité de votre navigateur. Il doit indiquer que votre site est correctement sécurisé, généralement en incluant une icône de cadenas dans la barre d'adresse.
Vous pouvez utiliser le SSL Labs Server Test pour vérifier la qualité de votre certificat et obtenir des informations détaillées à son sujet, dans la perspective d'un service externe.
Dans la prochaine et dernière étape, nous testerons la fonction de renouvellement automatique de Certbot, qui garantit que votre certificat sera renouvelé automatiquement avant la date d'expiration.
Deuxième façons
Pour utiliser ce plugin, tapez ce qui suit :
sudo certbot -d www.your_domain
si vous avez bien fais la conf de apache cela sera beaucoup plus rapide et vous pourrez héberger plusieurs site internet sur le même serveur via la même ip
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Votre certificat est maintenant installé et chargé dans la configuration d'Apache.
Étape 4 — Verification du renouvellement automatique de Certbot
Les certificats Let’s Encrypt ne sont valables que quatre-vingt-dix jours. Cette mesure vise à encourager les utilisateurs à automatiser le processus de renouvellement de leurs certificats, ainsi qu'à garantir que les certificats utilisés abusivement ou les clés volées expirent le plus tôt possible.
Le package certbot que nous avons installé prend en charge les renouvellements en incluant un script de renouvellement dans /etc/cron.d, qui est géré par un service systemctl appelé certbot.timer. Ce script est exécuté deux fois par jour et renouvellera automatiquement tout certificat qui se trouve dans une période de trente jours précédant son expiration.
Pour vérifier le statut de ce service et vous assurer qu'il est actif et qu'il fonctionne, vous pouvez utiliser :
sudo systemctl status certbot.timer
Vous aurez une sortie similaire à celle-ci :
Output ● certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2020-04-28 17:57:48 UTC; 17h ago Trigger: Wed 2020-04-29 23:50:31 UTC; 12h left Triggers: ● certbot.service Apr 28 17:57:48 fine-turtle systemd[1]: Started Run certbot twice daily.
Pour tester le processus de renouvellement, vous pouvez faire un essai avec certbot :
sudo certbot renew --dry-run
Si vous ne voyez pas d'erreurs, tout est prêt. Si nécessaire, Certbot renouvellera vos certificats et rechargera Apache pour récupérer les modifications. Si le processus de renouvellement automatisé échoue, Let’s Encrypt enverra un message à l'adresse électronique que vous avez indiquée, vous avertissant de l'expiration prochaine de votre certificat.