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 [2016/12/03 14:17] – [Connaître la date d'expiration de son certificat let's encrypt] Corrections made by Tycho zatalyz | fr:https_ssl [2024/03/15 14:10] (Version actuelle) – [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 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 / | + | |
+ | <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 dans ''/ | ||
+ | Demander la certification d'un seul domaine sans ajouter des crasses partout : | ||
+ | sudo certbot certonly --standalone -d mondomain.org | ||
- | Activer la prise en charge de SSL : | + | Les chemins à ajouter dans ''/ |
- | a2ensite default-ssl | + | |
- | | + | |
- | | + | |
+ | Pensez à rediriger tout votre flux du port 80 (http) vers le 443 (https), puis à redémarrer Apache. | ||
+ | Plus d' | ||
- | Pour plus de détails | + | === Sous-domaines et domaines différents |
- | * http://blog.moncoindunet.fr/linux/openssl-creer-un-certificat-auto-signe/ | + | 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 " |
- | * http://doc.ubuntu-fr.org/ | + | |
- | ===== Let's Encrypt ===== | + | Let's encrypt |
- | Créer un certificat avec Let's encrypt, c' | + | |
- | Tout d' | ||
- | < | + | ==== Sur Nginx ==== |
- | git clone https:// | + | Nginx a besoin d' |
- | </ | + | |
- | et se placer dans le répertoire | + | Commencez par demander un certificat SSL. Il faut arrêter nginx sinon ça fait une erreur : |
+ | < | ||
+ | sudo certbot | ||
+ | sudo service nginx start</ | ||
- | 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 | + | Pour renouveler le certificat, il suffit |
+ | sudo certbot renew | ||
- | Il n'y a plus qu'a configurer apache2 avec ces certificats. Il a prévu un fichier | + | 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, puis rallumer. Cela peut se faire en laissant Certbot gérer : |
- | ==== Sous-domaines et domaines différents sur la même machine ==== | + | sudo certbot renew --pre-hook " |
- | 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 "https"). | + | sudo certbot renew --pre-hook " |
- | Let's encrypt semble repérer correctement les sous domaines dans le même fichier (nom1.mondomaine.com, | ||
- | ==== Connaître la date d' | + | Un cron tout les 90 jours suffirait |
- | Actuellement, | + | 1 1 1 2,4,6,8,10,12 * / |
- | Voici un script inspiré [[https:// | + | Le log vous permettra |
- | <code bash check_cert.sh> | + | </WRAP> |
- | # | + | |
- | + | ||
- | 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; | + | |
- | </code> | + | |
- | Copiez ça dans un fichier '' | ||
- | ./ | ||
- | À adapter suivant où le certificat est stocké. | ||
- | ==== Renouveler le certificat | + | ===== 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: | ||
- | Pour renouveler le certificat, il suffit de lancer la même commande que pour l' | + | ===== Installer un certificat |
- | <code> | + | <WRAP center round important 60%> |
- | cd letsencrypt | + | Un certificat |
- | sudo ./certbot-auto | + | |
- | </ | + | |
- | <WRAP center round tip 90%> | + | Il existe à présent Let's encrypt, qui vous fournit gratuitement un certificat reconnu. Il n'y a quasiment aucune raison de ne pas l' |
- | Pour renouveler tout automatiquement, sans interaction, la commande suivante semble la bonne : | + | |
- | certbot-auto renew | + | |
- | Dans ce cas, un cron tout les 90 jours suffirait à renouveler les certificats. Exemple | + | Le certificat auto-signé peut tout de même présenter un peu d' |
- | 1 1 1 2, | + | </WRAP> |
+ | **En root** | ||
- | </ | + | Installer le paquet '' |
+ | Vérifier que dans ''/ | ||
- | ===== Améliorer et tester la sécurité du site via https ===== | + | SSLCertificateFile |
- | Pour vérifier la qualité de la sécurisation de l' | + | |
- | * https://www.ssllabs.com/ssltest/analyze.html : permet de voir les plus grosses erreurs | + | |
- | | + | |
- | Voir le fichier de configuration du module SSL d' | ||
- | SSLProtocol all -SSLv2 -SSLv3 | + | Activer la prise en charge de SSL : |
- | ( à noter le "-" devant SSLv3 ) | + | |
+ | a2enmod ssl | ||
+ | service apache2 restart | ||
- | Interdire la compression d' | ||
- | SSLCompression off | ||
- | Et finalement lister la liste des " | ||
- | SSLCipherSuite " | ||
- | <WRAP center round help 60%> | + | Pour plus de détails sur l' |
- | À tester, nouvelle proposition | + | |
- | | + | * http:// |
- | </WRAP> | + | |
+ | ===== Améliorer et tester la sécurité du site via https ===== | ||
+ | Pour vérifier la qualité de la sécurisation de l' | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
- | <WRAP center round tip 60%> | + | Let's encrypt est pas mal... mais pas parfait((En tout cas, au moment où je rédige ces lignes, 30 décembre |
- | Ancienne configuration, génère un A- au 11/02/2016. La nouvelle au dessus vient de [[https:// | + | |
- | SSLCipherSuite | + | |
- | </ | + | |
+ | On va donc [[https:// | ||
- | Noter le " | + | < |
+ | openssl dhparam -out dhparams.pem 4096</ | ||
- | Puis imposer de négocier les protocoles | + | Puis ajouter cette ligne dans ''/ |
- | | + | |
- | Pensez à relancer l' | + | Voir aussi [[fr:securite_sysadmin#module_ssl|la configuration de SSL.]] |
- | | + | |
{{tag> | {{tag> |