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.
Ce tutoriel utilise un fichier d’hôte virtuel séparé au lieu du fichier de configuration par défaut d’Apache pour configurer le site web qui sera sécurisé par Let’s Encrypt. Nous recommandons de créer de nouveaux fichiers d’hôtes virtuels Apache pour chaque domaine hébergé dans un serveur, car cela permet d’éviter les erreurs courantes et de conserver les fichiers de configuration par défaut comme configuration de repli.
Pour suivre ce tutoriel, vous aurez besoin de :
Un serveur Ubuntu 20.04 configuré en suivant cette configuration initiale du serveur pour le tutoriel Ubuntu 20.04, comprenant un utilisateur sudo non root et un pare-feu.
Un nom de domaine entièrement enregistré. Ce tutoriel utilisera your_domain comme exemple tout du long. Vous pouvez acheter un nom de domaine sur Namecheap, en obtenir un gratuitement sur Freenom, ou utiliser le bureau d’enregistrement de domaine de votre choix.
Les deux enregistrements DNS suivants ont été configurés pour votre serveur. Vous pouvez suivre cette introduction à DigitalOcean DNS pour savoir comment les ajouter.
your_domain
pointant sur l’adresse IP publique de votre serveur.www.your_domain
pointant à l’adresse IP publique de votre serveur.Apache installé en suivant le guide Comment installer Apache sur Ubuntu 20.04. Assurez-vous que vous disposez d’un fichier d’hôte virtuel pour votre domaine. Ce tutoriel utilisera /etc/apache2/sites-available/your_domain.conf
comme exemple.
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é.
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.
Si vous avez activé le pare-feu UFW, comme le recommandent les guides des conditions préalables, vous devrez ajuster les paramètres pour autoriser le trafic HTTPS. Lors de l’installation, Apache enregistre quelques profils d’application UFW différents. Nous pouvons utiliser le profil Apache Full pour autoriser le trafic HTTP et HTTPS sur votre serveur.
Pour vérifier quel type de trafic est actuellement autorisé sur votre serveur, vous pouvez utiliser :
- sudo ufw status
Si vous avez suivi l’un de nos guides d’installation d’Apache, votre sortie devrait ressembler à ceci, ce qui signifie que seul le trafic HTTP sur le port 80
est actuellement autorisé :
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Pour permettre également le trafic HTTPS, autoriser le profil “Apache Full” et supprimer le profil “Apache” redondant :
- sudo ufw allow 'Apache Full'
- sudo ufw delete allow 'Apache'
Votre statut ressemblera désormais à ceci :
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
Vous êtes maintenant prêt à exécuter Certbot et à obtenir vos certificats.
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é :
OutputSaving 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.
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.
Dans ce tutoriel, vous avez installé le certbot
client Let’s Encrypt, configuré et installé un certificat SSL pour votre domaine, et confirmé que le service de renouvellement automatique de Certbot est actif dans systemctl
. Si vous avez d’autres questions sur l’utilisation de Certbot, leur documentation est un bon point de départ.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!