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édente | ||
| fr:https_ssl [2023/12/17 09:24] – [Let's Encrypt] vite fait zatalyz | fr:https_ssl [2025/11/18 10:44] (Version actuelle) – [Apache] YannK | ||
|---|---|---|---|
| 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 un peu d' | + | |
| </ | </ | ||
| - | **En root** | ||
| - | Installer le paquet | + | ===== Let's Encrypt |
| + | Certbot est un client permettant d'obtenir | ||
| - | Vérifier que dans ''/ | + | Il est inclus |
| + | sudo apt install certbot | ||
| + | |||
| + | Lors de sa première utilisation (et suivant | ||
| - | SSLCertificateFile | + | ==== Apache ==== |
| - | SSLCertificateKeyFile / | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | Activer la prise en charge de SSL : | + | |
| - | a2ensite default-ssl | + | |
| - | a2enmod ssl | + | |
| - | service apache2 restart | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | Pour plus de détails sur l' | + | |
| - | * http:// | + | |
| - | * http:// | + | |
| - | ===== Let's Encrypt ===== | + | <WRAP center round tip 60%> |
| - | <WRAP center round todo 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. |
| - | Je note vraiment vite fait... histoire d'y retrouver... va falloir reprendre. | + | |
| </ | </ | ||
| + | Par défaut, les certificats se trouvent dans ''/ | ||
| - | Demander la certification d'un seul domaine sans ajouter des crasses partout : | + | Demander la certification d'un seul domaine sans ajouter des crasses partout. Attention, il faut éteindre/ |
| + | sudo service apache2 stop | ||
| sudo certbot certonly --standalone -d mondomain.org | sudo certbot certonly --standalone -d mondomain.org | ||
| + | sudo service apache2 start | ||
| - | Les chemins à ajouter dans apache/nginx/autre seront : | + | Ou en une commande((Ça devrait marcher, mais j'ai oublié de tester.)) : |
| + | sudo certbot certonly --standalone -d mondomain.org --pre-hook " | ||
| + | |||
| + | Les chemins à ajouter dans '' | ||
| SSLCertificateFile / | SSLCertificateFile / | ||
| SSLCertificateKeyFile / | SSLCertificateKeyFile / | ||
| + | Pensez à rediriger tout votre flux du port 80 (http) vers le 443 (https), puis à redémarrer Apache. | ||
| + | Plus d' | ||
| - | ==== Vieille doc à nettoyer ==== | + | === Sous-domaines et domaines différents sur la même machine |
| + | Il vaut mieux faire un fichier par //vhost// dans Apache. | ||
| - | <WRAP center round important 60%> | + | Si vous n'avez pas spécialement configuré Apache, let's encrypt peut générer automatiquement |
| - | À mettre à jour, certbot est à présent dans les paquets | + | |
| - | Je laisse pour le moment, pas le temps de nettoyer, mais c' | + | Let's encrypt semble repérer correctement les sous domaines dans le même fichier (nom1.mondomaine.com, nom2.mondomaine.com, etc.)((À éviter quand même, un fichier par sous-domaine |
| - | </ | + | |
| - | Créer un certificat avec Let's encrypt, c'est très simple !™ | ||
| - | Tout d'abord, se placer sur un compte utilisateur et récupérer le client Let's Encrypt (désormais appelé CertBot) : | + | ==== Sur Nginx ==== |
| + | Nginx a besoin | ||
| - | < | + | Commencez par demander un certificat SSL. Il faut arrêter nginx sinon ça fait une erreur : |
| - | git clone https:// | + | < |
| - | </ | + | sudo certbot |
| + | sudo service nginx start</ | ||
| - | et se placer dans le répertoire | + | Ou en une ligne : |
| + | sudo certbot | ||
| - | lancer le client | + | Voir [[fr:nginx# |
| - | < | + | Lors des renouvellements, |
| - | cd certbot | + | sudo certbot |
| - | sudo ./certbot-auto | + | |
| - | </ | + | |
| - | Les certificats se retrouvent dans / | + | ==== Renouveler |
| - | Il demande aussi si on veut ou non une redirection automatique de http vers https. Permettez https partout, c'est plus sérieux. | + | Pour renouveler le certificat, il suffit de lancer la commande suivante : |
| + | sudo certbot renew | ||
| - | Il n'y a plus qu'a configurer apache2 avec ces certificats. Il a prévu un fichier de configuration avec ce qui existait déjà, vérifiez qu'il convient. A priori tout ceci se finalise tout seul et il n'y a rien d' | + | Si vous n'avez que les certificats à renouveller sans laisser let's encrypt bidouiller vos conf, alors il faudra éteindre |
| - | Pour ce qui doit apparaître dans chacun des vhosts (''/ | + | sudo certbot renew --pre-hook " |
| + | sudo certbot renew --pre-hook " | ||
| - | ==== 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 | + | Un cron tout les 90 jours suffirait à renouveler les certificats. Exemple de cron, avec renouvellement/ |
| + | 7 4 * */1 * / | ||
| - | ==== Connaître la date d' | + | Le log vous permettra |
| - | Actuellement, | + | </ |
| - | Voici un script inspiré [[https:// | + | ==== Supprimer |
| - | <code bash check_cert.sh> | + | Absolument nécessaire si on migre un site de machine... Il faut alors virer les restes sur l'ancienne machine, sinon cela fera des erreurs. |
| - | # | + | |
| - | + | ||
| - | set -euo pipefail | + | |
| - | IFS=$'\n\t' | + | |
| - | + | ||
| - | + | ||
| - | 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 '' | + | sudo certbot delete --cert-name mondomaine.org |
| - | ./ | + | ===== Client Let's Encrypt ACMEd ===== |
| + | Le client ACMEd est à privilégier si vous voulez une installation sécurisée. Voir le détail dans la [[fr: | ||
| - | À adapter suivant où le certificat est stocké. | + | ===== Installer un certificat |
| + | <WRAP center round important 60%> | ||
| + | Un certificat auto-signé va générer une alerte sur tout navigateur sérieux. Le certificat installé | ||
| - | ==== Renouveler le certificat | + | Il existe à présent Let's encrypt, qui vous fournit gratuitement un certificat |
| - | Pour renouveler le certificat, il suffit | + | Le certificat |
| - | < | + | </WRAP> |
| - | cd letsencrypt | + | |
| - | sudo ./ | + | |
| - | </code> | + | |
| - | <WRAP center round tip 90%> | + | **En root** |
| - | 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 : | + | Installer le paquet '' |
| - | 1 1 1 2, | + | |
| - | Le log vous permettra de vérifier s'il y a eu des soucis. | + | Vérifier que dans ''/etc/ |
| - | </WRAP> | + | |
| - | ==== Sur Nginx ==== | + | SSLCertificateFile |
| - | Nginx est un peu moins automatique. | + | |
| - | Commencez par demander un certificat SSL. Il faut arrêter nginx sinon ça fait une erreur : | ||
| - | < | ||
| - | sudo certbot certonly --standalone -d monsite.mondomaine.org | ||
| - | sudo service nginx start</ | ||
| - | Voir [[fr: | ||
| - | Lors des renouvellements, | + | Activer |
| - | | + | |
| + | a2enmod ssl | ||
| + | service apache2 restart | ||
| - | ===== Client Let's Encrypt ACMEd ===== | + | |
| - | Le client ACMEd est à privilégier | + | |
| + | Pour plus de détails sur l' | ||
| + | * http:// | ||
| + | * http:// | ||
| ===== Améliorer et tester la sécurité du site via https ===== | ===== Améliorer et tester la sécurité du site via https ===== | ||





