Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes |
tutoriel:internet:nginx:ssl:letsencrypt:start [2021/01/24 09:12] – [Pré-requis] admin | tutoriel:internet:nginx:ssl:letsencrypt:start [2021/01/24 10:48] – [Autres étapes] admin |
---|
====== Première étape : Installation de Certbot ====== | ====== Première étape : Installation de Certbot ====== |
| |
Pour installer Certbot, exécutez :<cli>...@...:~$ sudo apt update && sudo apt install certbot python-certbot-nginx python-certbot-apache</cli> | Exécutez :<cli>...@...:~ $ sudo apt update |
| ...@...:~ $ sudo apt install certbot python-certbot-nginx python-certbot-apache</cli> |
| |
====== Autres étapes ====== | ====== Autres étapes ====== |
| |
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> |
===== 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. |
Pour configurer automatiquement SSL pour Nginx, **Certbot** doit pouvoir de trouver le bloc server correct dans votre config. | * 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> |
| |
Pour ce faire, il recherche 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/your_domain** doit contenir un bloc server pour votre domaine avec la directive **server_name** définie de manière appropriée. | |
- Pour le vérifier, ouvrez avec les droits d'administration le fichier **/etc/nginx/sites-available/your_domain** et recherchez la ligne server_name qui devrait ressembler à ceci :<code txt /etc/nginx/sites-available/your_domain> | |
server { | server { |
<...> | <...> |
server_name your_domain www.your_domain; | server_name mondomaine.fr www.mondomaine.fr; |
<...> | <...> |
} | } |
</code>Si c'est le cas, quittez votre éditeur et passez à l'étape suivante ; sinon, mettez le fichier à jour pour qu'il corresponde. | </code>Si c'est le cas, quittez votre éditeur et passez à l'étape suivante ; sinon, mettez le fichier à jour pour qu'il corresponde. |
- Vérifiez la syntaxe de vos modifications de configuration avec :<cli>...@...:~$ sudo nginx -t | - Vérifiez la syntaxe de vos modifications de configuration avec :<cli>...@...:~ $ sudo nginx -t |
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok | nginx: the configuration file /etc/nginx/nginx.conf syntax is ok |
nginx: configuration file /etc/nginx/nginx.conf test is successful</cli>S'il y a des erreurs, rouvrez le fichier de l'hôte et recherchez les fautes de frappe. | nginx: configuration file /etc/nginx/nginx.conf test is successful</cli>S'il y a des erreurs, rouvrez le fichier de l'hôte et recherchez les fautes de frappe. |
- 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. | - **__Autoriser HTTPS sur le pare-feu__** ; si le pare-feu **ufw** est activé, ajustez les paramètres pour autoriser le trafic HTTPS : |
| - Affichez le réglage actuel :<cli>...@...:~ $ sudo ufw status |
===== Autoriser HTTPS sur le pare-feu ===== | |
| |
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 |
| |
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 |
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 ====== |