Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
tutoriel:internet:nginx:ssl:letsencrypt:start [2021/01/24 09:26] – [Autres étapes] admintutoriel:internet:nginx:ssl:letsencrypt:start [2021/01/24 15:09] – [Première étape : Installation de Certbot] admin
Ligne 1: Ligne 1:
 {{tag>tutoriel}} {{tag>tutoriel}}
  
-====== SSL pour Nginx : mettre en place un certificat SSL Let's Encrypt ======+====== SSL pour Nginx : mettre en place un certificat SSL Let's Encrypt avec Certbot ======
  
 Les protocoles Web **TLS** (et son prédécesseur **SSL**) englobent le trafic dans un contenant protégé et chiffré pour : Les protocoles Web **TLS** (et son prédécesseur **SSL**) englobent le trafic dans un contenant protégé et chiffré pour :
Ligne 8: Ligne 8:
  
 L'autorité de certification **Let's Encrypt** fournit gratuitement des certificats TLS/SSL, permettant le HTTPS chiffré sur les serveurs Web. Le logiciel **Certbot** automatise et facilite les étapes de l'installation d'un certificat. le processus d'obtention et d'installation d'un certificat est entièrement automatisé sur les serveurs Apache et Nginx. L'autorité de certification **Let's Encrypt** fournit gratuitement des certificats TLS/SSL, permettant le HTTPS chiffré sur les serveurs Web. Le logiciel **Certbot** automatise et facilite les étapes de l'installation d'un certificat. le processus d'obtention et d'installation d'un certificat est entièrement automatisé sur les serveurs Apache et Nginx.
 +
 +Normalement, **Certbot** est exécuté par un administrateur sur un serveur web.
 +
 +Cette page décrit l'installation et l'exécution de Certbot sur un serveur
  
 Ce tutoriel utilise Certbot pour obtenir un certificat SSL gratuit pour Nginx et le configurer pour qu'il se renouvelle automatiquement. Ce tutoriel utilise Certbot pour obtenir un certificat SSL gratuit pour Nginx et le configurer pour qu'il se renouvelle automatiquement.
Ligne 17: Ligne 21:
 Dans ce tutoriel, ce sera le domaine **mondomaine.fr** Dans ce tutoriel, ce sera le domaine **mondomaine.fr**
 </WRAP> </WRAP>
 +  * **Python**
   * **[[logiciel:internet:nginx:start|Nginx]]** installé avec un bloc //server// pour votre domaine.<WRAP center round info 60%>   * **[[logiciel:internet:nginx:start|Nginx]]** installé avec un bloc //server// pour votre domaine.<WRAP center round info 60%>
 Ce tutoriel utilisera **/etc/nginx/sites-available/mondomaine.fr** comme exemple. Ce tutoriel utilisera **/etc/nginx/sites-available/mondomaine.fr** comme exemple.
Ligne 22: Ligne 27:
 ====== Première étape : Installation de Certbot ====== ====== Première étape : Installation de Certbot ======
  
-Exécutez :<cli>...@...:~ $ sudo apt update +Sous SSH, installez Certbot sur le serveur web :<cli prompt='$ '>...@...:~ $ sudo apt update 
-...@...:~ $ sudo apt install certbot python-certbot-nginx python-certbot-apache</cli>+...@...:~ $ sudo apt install certbot python-certbot-nginx</cli> 
 +<WRAP center round info 60%> 
 +Si vous êtes sous **Apache**, installez **python-certbot-apache** au lieu de python-certbot-nginx 
 +</WRAP>
  
 ====== Autres étapes ====== ====== Autres étapes ======
Ligne 29: Ligne 37:
 Nous allons récupérer depuis Let’s Encrypt un certificat SSL pour notre serveur. Nous allons récupérer depuis Let’s Encrypt un certificat SSL pour notre serveur.
 <subnumberlist> <subnumberlist>
-  - **Configuration de Nginx** :+  - **__Configuration de Nginx__** :
     - **Certbot** recherche dans votre config de Nginx une directive **server_name** correspondant au domaine pour lequel vous demandez un certificat.     - **Certbot** recherche dans votre config de Nginx une directive **server_name** correspondant au domaine pour lequel vous demandez un certificat.
-    - Si vous avez bien configuré l'hôte virtuel lors l'installation de Nginx, le fichier **/etc/nginx/sites-available/mondomaine.fr** doit contenir un bloc //server// pour votre domaine avec la directive **server_name** définie de manière appropriée :<code - /etc/nginx/sites-available/mondomaine.fr>+      * Si vous avez bien configuré l'hôte virtuel lors l'installation de Nginx, le fichier **/etc/nginx/sites-available/mondomaine.fr** doit contenir un bloc //server// pour votre domaine avec la directive **server_name** définie de manière appropriée :<code - /etc/nginx/sites-available/mondomaine.fr>
 server { server {
 <...> <...>
Ligne 43: Ligne 51:
     - Si cela fonctionne sans erreur, rechargez Nginx pour charger la nouvelle configuration :<cli>...@...:~ $ sudo nginx -s reload</cli>     - Si cela fonctionne sans erreur, rechargez Nginx pour charger la nouvelle configuration :<cli>...@...:~ $ sudo nginx -s reload</cli>
     - Certbot peut maintenant trouver le bon bloc server et le mettre à jour.     - Certbot peut maintenant trouver le bon bloc server et le mettre à jour.
-</subnumberlist> +  - **__Autoriser HTTPS sur le pare-feu__** ; si le pare-feu **ufw** est activé, ajustez les paramètres pour autoriser le trafic HTTPS : 
-===== Autoriser HTTPS sur le pare-feu ===== +    - Affichez le réglage actuel :<cli>...@...:~ $ sudo ufw status
- +
-Si le pare-feu **ufw** est activé, comme recommandé dans les prérequis, vous devrez ajuster les paramètres pour autoriser le trafic HTTPS. +
-  - Affichez le réglage actuel :<cli>...@...:~$ sudo ufw status+
 Status: active Status: active
  
Ligne 56: Ligne 61:
 80 (v6)                    ALLOW       Anywhere (v6) 80 (v6)                    ALLOW       Anywhere (v6)
 22/tcp (v6)                ALLOW       Anywhere (v6)</cli> 22/tcp (v6)                ALLOW       Anywhere (v6)</cli>
-  - Si le port 443 n'est pas ouvert, activez-le par :<cli>...@...:~$ sudo ufw allow ssh</cli> +    - Si le port 443 n'est pas ouvert, activez-le par :<cli>...@...:~$ sudo ufw allow ssh</cli> 
- +  - **__Obtention d'un certificat SSL__** 
-===== Obtention d'un certificat SSL ===== +    Certbot fournit des plugins pour obtenir des certificats SSL. Le plugin --nginx reconfigure Nginx et recharge la configuration autant que nécessaire. Pour utiliser ce plugin, tapez :<cli>...@...:~$ sudo certbot --nginx -d mondomaine.fr -d www.mondomaine.fr 
- +...
-Certbot fournit des plugins pour obtenir des certificats SSL. Le plugin --nginx reconfigure Nginx et recharge la configuration autant que nécessaire. Pour utiliser ce plugin, tapez :<cli>...@...:~$ sudo certbot --nginx -d your_domain -d www.your_domain +
-<...>+
 Enter email address (used for urgent renewal and security notices) (Enter 'c' to Enter email address (used for urgent renewal and security notices) (Enter 'c' to
 cancel): votre@email.fr cancel): votre@email.fr
-<...>+...
 Please read the Terms of Service at Please read the Terms of Service at
-<...>+...
 (A)gree/(C)ancel: A (A)gree/(C)ancel: A
 <...> <...>
-Would you be willing to share your email address with <...> +Would you be willing to share your email address with ... 
-<...>+...
 (Y)es/(N)o: N (Y)es/(N)o: N
-<...>+...
 Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. 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. 1: No redirect - Make no further changes to the webserver configuration.
 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for 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 new sites, or if you're confident your site works on HTTPS. You can undo this
 change by editing your web server's configuration. change by editing your web server's configuration.
-<...>+...
 Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
 <...> <...>
-</cli> +</cli>Cette commande lance certbot avec le plugin **--nginx**, en utilisant **-d** pour spécifier les noms de domaine pour lesquels nous voulons un certificat valide. 
-Cette commande lance certbot avec le plugin **--nginx**, en utilisant **-d** pour spécifier les noms de domaine pour lesquels nous voulons un certificat valide. +    La première fois que vous exécutez certbot, vous serez invité à saisir une adresse e-mail et à accepter les conditions d'utilisation. 
- +    * Puis certbot vérifie que vous êtes le propriétaire du domaine pour lequel vous demandez un certificat. 
-La première fois que vous exécutez certbot, vous serez invité à saisir une adresse e-mail et à accepter les conditions d'utilisation. +    Si cela réussit, certbot vous demande comment configurer vos paramètres HTTPS : 
- +      * **1** : Pas de redirection - Ne faites plus de modification à la configuration du serveur Web. 
-Ensuite, certbot communique avec le serveur Let's Encrypt qui vérifie que vous êtes le propriétaire du domaine pour lequel vous demandez un certificat. +      * **2** : Redirection - Rediriger toutes les demandes vers un accès sécurisé HTTPS. 
- +    Sélectionnez votre choix puis appuyez sur <key>ENTREE</key>
-Si cela réussit, certbot vous demande comment configurer vos paramètres HTTPS : +    La configuration est mise à jour et Nginx se recharge pour récupérer les nouveaux paramètres. 
-  Pas de redirection - Ne faites plus de modification à la configuration du serveur Web. +    certbot termine avec un message vous indiquant que le processus a réussi et où sont stockés vos certificats :<cli prompt='$ '>...@...:~ $ 
-  Redirection - Rediriger toutes les demandes vers un accès sécurisé HTTPS. +
-Sélectionnez votre choix puis appuyez sur <key>ENTREE</key>+
- +
-La configuration est mise à jour et Nginx se recharge pour récupérer les nouveaux paramètres. +
- +
-certbot termine avec un message vous indiquant que le processus a réussi et où sont stockés vos certificats : +
-<cli>+
 IMPORTANT NOTES: IMPORTANT NOTES:
  - Congratulations! Your certificate and chain have been saved at  - Congratulations! Your certificate and chain have been saved at
Ligne 115: Ligne 111:
    Donating to EFF:                    https://eff.org/donate-le    Donating to EFF:                    https://eff.org/donate-le
 </cli> </cli>
- +    * Vos certificats sont maintenant téléchargés, installés et configurés. 
-Vos certificats sont maintenant téléchargés, installés et configurés. +    * Rechargez votre site Web en utilisant %%https://%% et examinez l'icône de cadenas de votre navigateur qui doit être verte. 
- +    Si vous testez votre serveur à l'aide du test de [[https://www.ssllabs.com/ssltest/analyze.html]] (renseignez votre domaine et testez), il obtiendra une note A. 
-Essayez de recharger votre site Web avec %%https://%% et surveillez l'indicateur de sécurité de votre navigateur+  - **__Vérification du renouvellement automatique de Certbot__** : 
- +    Les certificats de Let’s Encrypt ne sont valables que quatre-vingt-dix jours. 
-Il doit indiquer que le site est correctement sécurisé, généralement avec une icône de cadenas verte. +    certbot renouvelle automatiquement le certificat en ajoutant à /etc/cron.d un script qui s'exécute deux fois par jour et renouvellera automatiquement tout certificat dans les trente jours suivant l'expiration. 
- +    Pour tester le processus de renouvellement :<cli>...@...:~$ sudo certbot renew --dry-run</cli>Si vous ne voyez aucune erreur, vous êtes prêt. 
-Si vous testez votre serveur à l'aide du test de [[https://www.ssllabs.com/ssltest/analyze.html]] (renseignez votre domaine et testez), il obtiendra une note A. +    Si nécessaire, Certbot renouvellera vos certificats et rechargera Nginx pour récupérer les modifications. 
- +    Si le processus de renouvellement automatisé échoue, Let’s Encrypt enverra un message à l'e-mail que vous avez spécifié, vous avertissant que votre certificat est sur le point d'expirer. 
-===== Vérification du renouvellement automatique de Certbot ===== +</subnumberlist>
- +
-Les certificats de Let’s Encrypt ne sont valables que quatre-vingt-dix jours pour encourager les utilisateurs à automatiser leur processus de renouvellement de certificat+
- +
-certbot s'en charge pour nous en ajoutant un script de renouvellement à /etc/cron.d+
- +
-Ce script s'exécute deux fois par jour et renouvellera automatiquement tout certificat dans les trente jours suivant l'expiration. +
- +
-Pour tester le processus de renouvellement, vous pouvez effectuer un essai à sec avec certbot :<cli>...@...:~$ sudo certbot renew --dry-run</cli> +
- +
-Si vous ne voyez aucune erreur, vous êtes prêt. +
- +
-Si nécessaire, Certbot renouvellera vos certificats et rechargera Nginx pour récupérer les modifications. +
- +
-Si le processus de renouvellement automatisé échoue, Let’s Encrypt enverra un message à l'e-mail que vous avez spécifié, vous avertissant que votre certificat est sur le point d'expirer.+
  
 ====== Conclusion ====== ====== Conclusion ======
  
 Dans ce didacticiel, nous avons installé le client certbot Let’s Encrypt, téléchargé des certificats SSL pour notre domaine, configuré Nginx pour utiliser ces certificats et configuré le renouvellement automatique des certificats. Dans ce didacticiel, nous avons installé le client certbot Let’s Encrypt, téléchargé des certificats SSL pour notre domaine, configuré Nginx pour utiliser ces certificats et configuré le renouvellement automatique des certificats.
- 
 ====== Problèmes connus ====== ====== Problèmes connus ======
  
 ====== Voir aussi ====== ====== Voir aussi ======
  
 +  * **(fr)** [[https://techarea.fr/certificat-ssl-gratuit-avec-lets-encrypt/|Tuto : certificat SSL gratuit avec Let’s Encrypt]]
 +  * **(en)** [[https://certbot.eff.org/docs/install.html#operating-system-packages|Get Certbot]]
 +  * **(en)** [[https://certbot.eff.org/lets-encrypt/debianbuster-nginx|certbot instructions]]
   * **(en)** [[https://www.digitalocean.com/community/tutorials/how-to-set-up-let-s-encrypt-with-nginx-server-blocks-on-ubuntu-16-04]]   * **(en)** [[https://www.digitalocean.com/community/tutorials/how-to-set-up-let-s-encrypt-with-nginx-server-blocks-on-ubuntu-16-04]]
   * **(en)** [[https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04]]   * **(en)** [[https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04]]
-  * Pour Raspberry :+  * **(en)** [[https://kloscomputing.co.uk/wordpress/2018/03/30/raspberry-pi-and-ssl-certificate-using-lets-encrypt/]] 
 +  * **(en)** [[https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-debian-10]] 
 +  * **(en)** [[https://www.techcoil.com/blog/installing-certbot-on-raspbian-buster-for-obtaining-lets-encrypts-browser-trusted-certificates-for-your-raspberry-pi-server-applications/]] 
 +  * **(en)** [[https://pimylifeup.com/raspberry-pi-ssl-lets-encrypt/]]
  
 ---- ----
-//Basé sur << [[https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04|How To Secure Nginx with Let's Encrypt on Ubuntu 14.04]] >> par Mitchell Anicas.//+//Basé sur << [[https://www.digitalocean.com/community/tutorials/how-to-set-up-let-s-encrypt-with-nginx-server-blocks-on-ubuntu-16-04|How To Set Up Let's Encrypt with Nginx Server Blocks on Ubuntu 16.04]] >> par Hazel Virdó.//