Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
fr:https_ssl [2023/06/21 07:29] – [Let's Encrypt] zatalyz | fr:https_ssl [2024/05/10 13:24] – [Renouveler le certificat] zatalyz | ||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
===== Pourquoi https ? ===== | ===== Pourquoi https ? ===== | ||
- | Lorsque vous vous rendez sur un site internet, un flux de données circulent entre votre ordinateur et celui du serveur où le site est hébergé. Pour certains sites, ça n'a pas grande importance que ce flux soit lisible par tous, mais à partir du moment où vous devez entrer un mot de passe, vous devriez | + | Lorsque vous vous rendez sur un site internet, un flux de données circulent entre votre ordinateur et celui du serveur où le site est hébergé. Pour certains sites, ça n'a pas grande importance que ce flux soit lisible par tous, mais à partir du moment où vous devez entrer un mot de passe, vous devez passer par le protocole " |
* [[http:// | * [[http:// | ||
Ligne 13: | Ligne 13: | ||
* Pour résumer, https, c'est un peu comme le préservatif : ça protège pas de tout, mais c'est le minimum pour éviter les ennuis. | * Pour résumer, https, c'est un peu comme le préservatif : ça protège pas de tout, mais c'est le minimum pour éviter les ennuis. | ||
- | ===== Installer un certificat auto-signé ===== | + | <WRAP center round info 90%> |
- | <WRAP center round important 60%> | + | Https est à présent |
- | Un certificat auto-signé va générer | + | </ |
- | Il existe à présent Let's encrypt, qui vous fournit gratuitement un certificat reconnu. À l' | ||
- | Le certificat auto-signé peut tout de même présenter | + | ===== Let's Encrypt |
- | </ | + | Certbot est un client permettant |
- | **En root** | + | Il est inclus dans la plupart des distributions linux, dont Debian : |
+ | sudo apt install certbot | ||
+ | |||
+ | Lors de sa première utilisation (et suivant les options qu'on lui donne), il pose quelques questions, demandant notamment un email pour recevoir des notifications quand on oublie de renouveler. Il faut en effet demander tous les trois mois à renouveller le certificat, l' | ||
- | Installer le paquet '' | + | ==== Apache ==== |
- | Vérifier que dans ''/ | + | <WRAP center round tip 60%> |
+ | Je déconseille de laisser certbot ajouter tout seul les informations dans Apache, il fait des crasses. Générez un certificat, modifiez à la main vos configurations Apache, ce sera mieux. | ||
+ | </ | ||
+ | Par défaut, les certificats se trouvent | ||
- | SSLCertificateFile | + | Demander la certification d'un seul domaine sans ajouter des crasses partout : |
- | | + | |
+ | Les chemins à ajouter dans ''/ | ||
+ | SSLCertificateFile / | ||
+ | SSLCertificateKeyFile / | ||
+ | Pensez à rediriger tout votre flux du port 80 (http) vers le 443 (https), puis à redémarrer Apache. | ||
- | Activer | + | Plus d' |
- | a2ensite default-ssl | + | |
- | a2enmod ssl | + | |
- | service apache2 restart | + | |
+ | === Sous-domaines et domaines différents sur la même machine === | ||
+ | Il vaut mieux faire un fichier par //vhost// dans Apache. Faites uniquement les versions non sécurisées (port 80), let's encrypt génère automatiquement les versions sécurisées (port 443, soit le " | ||
+ | Let's encrypt semble repérer correctement les sous domaines dans le même fichier (nom1.mondomaine.com, | ||
- | Pour plus de détails sur l' | ||
- | * http:// | ||
- | * http:// | ||
- | ===== Let's Encrypt ===== | + | ==== Sur Nginx ==== |
- | <WRAP center round important 60%> | + | Nginx a besoin d' |
- | À mettre à jour, certbot est à présent dans les paquets des distrib et mérite | + | |
- | </ | + | |
- | Créer | + | Commencez par demander |
+ | < | ||
+ | sudo certbot certonly --standalone -d monsite.mondomaine.org | ||
+ | sudo service nginx start</ | ||
- | Tout d'abord, se placer sur un compte utilisateur | + | Voir [[fr: |
- | < | + | Lors des renouvellements, |
- | git clone https:// | + | |
- | </ | + | |
- | et se placer dans le répertoire certbot. | ||
- | lancer | + | ==== Renouveler |
- | < | + | Pour renouveler le certificat, il suffit de lancer la commande suivante : |
- | cd certbot | + | sudo certbot |
- | sudo ./certbot-auto | + | |
- | </ | + | |
+ | Si vous n'avez que les certificats à renouveller sans laisser let's encrypt bidouiller vos conf, alors il faudra éteindre le serveur web (nginx ou apache) avant de renouveller, | ||
- | Les certificats se retrouvent dans / | + | sudo certbot renew --pre-hook " |
+ | sudo certbot renew --pre-hook " | ||
- | Il demande aussi si on veut ou non une redirection automatique de http vers https. Permettez https partout, c'est plus sérieux. | ||
- | Il n'y a plus qu'a configurer apache2 avec ces certificats. | + | Un cron tout les 90 jours suffirait à renouveler les certificats. |
+ | 7 4 * */1 * / | ||
- | Pour ce qui doit apparaître dans chacun | + | Le log vous permettra de vérifier s'il y a eu des soucis. |
+ | </WRAP> | ||
- | ==== Sous-domaines et domaines différents sur la même machine ==== | ||
- | Pour que Let's encrypt puisse générer un certificat pour tous les domaines hébergés sur le serveur, il vaut mieux faire un fichier par //vhost// dans Apache. Faites uniquement les versions non sécurisées (port 80), let's encrypt génère automatiquement les versions sécurisées (port 443, soit le " | ||
- | Let's encrypt semble repérer correctement les sous domaines dans le même fichier (nom1.mondomaine.com, | ||
- | ==== Connaître la date d' | + | ===== Client Let' |
- | Actuellement, | + | Le client ACMEd est à privilégier |
- | Voici un script inspiré [[https:// | + | ===== Installer |
- | <code bash check_cert.sh> | + | <WRAP center round important 60%> |
- | # | + | Un certificat auto-signé va générer une alerte sur tout navigateur sérieux. Le certificat installé est très basique et sert uniquement sur un serveur de test pour des tests autour de https. Il ne sera reconnu par aucune autorité. |
- | + | ||
- | set -euo pipefail | + | |
- | IFS=$' | + | |
- | + | ||
- | + | ||
- | error() { | + | |
- | msg=" | + | |
- | >&2 echo " | + | |
- | exit 1 | + | |
- | } | + | |
- | + | ||
- | test $# -eq 0 && error " | + | |
- | + | ||
- | FILE=" | + | |
- | test ! -f " | + | |
- | + | ||
- | EXPIRE_DATE=$(openssl x509 -in " | + | |
- | + | ||
- | echo " | + | |
- | echo " | + | |
- | + | ||
- | exit 0; | + | |
- | </ | + | |
- | Copiez ça dans un fichier | + | Il existe à présent Let's encrypt, qui vous fournit gratuitement |
- | ./ | + | |
- | À adapter suivant où le certificat est stocké. | + | Le certificat |
+ | </ | ||
- | ==== Renouveler le certificat ==== | + | **En root** |
- | Pour renouveler | + | Installer |
- | < | + | |
- | cd letsencrypt | + | |
- | sudo ./certbot-auto | + | |
- | </ | + | |
- | <WRAP center round tip 90%> | + | Vérifier que dans ''/ |
- | Pour renouveler tout automatiquement, | + | |
- | certbot-auto renew | + | |
- | Dans ce cas, un cron tout les 90 jours suffirait à renouveler les certificats. Exemple de cron, avec renouvellement tous les deux mois et log de ce qui se fait : | + | SSLCertificateFile |
- | | + | |
- | Le log vous permettra de vérifier s'il y a eu des soucis. | ||
- | </ | ||
- | ==== Sur Nginx ==== | ||
- | Nginx est un peu moins automatique. | ||
- | Commencez par demander un certificat | + | Activer la prise en charge de SSL : |
- | < | + | |
- | sudo certbot certonly --standalone -d monsite.mondomaine.org | + | |
- | sudo service | + | service |
- | Voir [[fr: | ||
- | Lors des renouvellements, | ||
- | sudo certbot renew | ||
- | ===== Client Let's Encrypt ACMEd ===== | + | Pour plus de détails sur l'installation d'un certificat auto-signé, |
- | Le client ACMEd est à privilégier | + | * http:// |
+ | * http:// | ||
===== Améliorer et tester la sécurité du site via https ===== | ===== Améliorer et tester la sécurité du site via https ===== |