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 [2016/12/03 14:10] – zatalyz | fr:https_ssl [2023/12/18 11:22] – reprise de la page 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 | ||
+ | |||
+ | 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' | ||
+ | |||
+ | ==== Apache ==== | ||
+ | |||
+ | <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 ''/ | ||
- | **En root** | + | Demander la certification d'un seul domaine sans ajouter des crasses partout : |
+ | sudo certbot certonly --standalone -d mondomain.org | ||
- | Installer le paquet | + | Les chemins à ajouter dans '' |
+ | SSLCertificateFile / | ||
+ | SSLCertificateKeyFile / | ||
- | Vérifier que dans ''/ | + | Pensez à rediriger tout votre flux du port 80 (http) |
- | SSLCertificateFile | + | Plus d' |
- | SSLCertificateKeyFile / | + | |
+ | === 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, | ||
- | Activer la prise en charge de SSL : | ||
- | a2ensite default-ssl | ||
- | a2enmod ssl | ||
- | service apache2 restart | ||
+ | ==== Sur Nginx ==== | ||
+ | Nginx a besoin d' | ||
+ | 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</ | ||
- | Pour plus de détails | + | Voir [[fr: |
- | * http:// | + | |
- | * http:// | + | |
- | ===== Let's Encrypt ===== | + | Lors des renouvellements, éteindre à nouveau nginx et renouveler avec la commande suivante : |
- | Créer un certificat avec Let's encrypt, c'est très simple !™ | + | sudo certbot renew |
- | Tout d' | ||
- | < | + | ==== Renouveler le certificat ==== |
- | git clone https:// | + | |
- | </ | + | |
- | et se placer dans le répertoire | + | Pour renouveler |
+ | sudo certbot | ||
- | lancer | + | Dans le cas de Nginx, il faudra éteindre le service nginx avant, renouveler puis rallumer. |
- | < | + | 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 : |
- | cd certbot | + | 1 1 1 2, |
- | sudo ./ | + | |
- | </code> | + | |
+ | Le log vous permettra de vérifier s'il y a eu des soucis. | ||
+ | </ | ||
- | Les certificats se retrouvent | + | <WRAP center round todo 60%> |
+ | On pourrait aussi faire un petit script (dans le cas de nginx en particulier) qui éteint, demande les certificats, | ||
+ | </ | ||
- | Il demande aussi si on veut ou non une redirection automatique de http vers https. | ||
- | 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' | + | ===== 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: | ||
- | ==== Sous-domaines et domaines différents sur la même machine | + | ===== Installer un certificat auto-signé ===== |
- | Pour que Let's encrypt puisse générer un certificat | + | <WRAP center round important 60%> |
+ | Un certificat | ||
- | Let's encrypt | + | Il existe à présent |
- | ==== Connaître la date d'expiration de son certificat let's encrypt ==== | + | Le certificat auto-signé peut tout de même présenter un peu d'intérêt, en local ou si on travaille dans une vm sans accès web. C' |
- | Actuellement, la durée des certificats délivrés par let's encrypt | + | </ |
- | Voici [[https:// | + | **En root** |
- | <code bash check_cert.sh># | + | |
- | # | + | |
- | # check_cert.sh | + | |
- | # | + | |
- | # Boris HUISGEN < | + | |
- | # | + | |
- | + | ||
- | if [ $# -eq 0 ]; | + | |
- | then | + | |
- | echo " | + | |
- | exit 1; | + | |
- | fi | + | |
- | + | ||
- | FILE=$1 | + | |
- | + | ||
- | if [ ! -e $FILE ] ; then | + | |
- | echo "$1 file does not exist." | + | |
- | exit 2; | + | |
- | fi | + | |
- | + | ||
- | EXPIRE_DATE=$(openssl x509 -in $FILE -noout -enddate | cut -f2 -d=); | + | |
- | + | ||
- | echo " | + | |
- | echo " | + | |
- | + | ||
- | exit 0;</ | + | |
- | Copiez ça dans un fichier | + | Installer le paquet |
- | | + | |
- | À adapter suivant où le certificat | + | Vérifier que dans ''/ |
- | ==== Renouveler le certificat ==== | + | SSLCertificateFile |
+ | SSLCertificateKeyFile / | ||
- | Pour renouveler le certificat, il suffit de lancer la même commande que pour l' | ||
- | < | ||
- | cd letsencrypt | ||
- | sudo ./ | ||
- | </ | ||
- | <WRAP center round tip 90%> | ||
- | Pour renouveler tout automatiquement, | ||
- | certbot-auto renew | ||
- | Dans ce cas, un cron tout les 90 jours suffirait à renouveler les certificats. Exemple | + | Activer la prise en charge |
- | | + | |
+ | a2enmod ssl | ||
+ | service apache2 restart | ||
- | </ | ||
+ | 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 ===== | ||
Ligne 133: | Ligne 120: | ||
* https:// | * https:// | ||
* https:// | * https:// | ||
+ | * https:// | ||
+ | Let's encrypt est pas mal... mais pas parfait((En tout cas, au moment où je rédige ces lignes, 30 décembre 2016.)). La taille de la clé est un peu petite ; il faut avouer que la génération d'une clé plus longue peut prendre un très long temps. | ||
- | Voir le fichier de configuration du module SSL d' | + | On va donc [[https://f4fia.wordpress.com/2015/08/09/configurer-son-serveur-web-en-https/ |
- | + | ||
- | SSLProtocol all -SSLv2 -SSLv3 | + | |
- | ( à noter le " | + | |
- | + | ||
- | Interdire la compression d' | + | |
- | SSLCompression off | + | |
- | + | ||
- | Et finalement lister la liste des " | + | |
- | SSLCipherSuite " | + | |
- | + | ||
- | <WRAP center round help 60%> | + | |
- | À tester, nouvelle proposition : | + | |
- | ALL: | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | <WRAP center round tip 60%> | + | |
- | Ancienne configuration, | + | |
- | SSLCipherSuite ' | + | |
- | </ | + | |
- | 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> |