PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

P3ter : Activer le HTTPS sur son site web avec un certificat signé par Let's Encrypt

jeudi 4 mai 2017 à 15:55

L'ennui avec HTTPS, c'est que pour obtenir le fameux cadenas vert à gauche de l'url de son site, il faut un certificat signé par une Autorité de Certification connue de son navigateur Internet. Et c'est là qu'intervient Let's Encrypt. Dans cette article, je vous explique comment j'ai pu mettre en place le HTTPS sur ce blog, obtenir mon certificat et le maintenir à jour, le tout gratuitement et de manière automatique. Vous verrez également comment paramétrer NGINX pour faire fonctionner le tout avec PluXml.

HTTPS est l'accronyme qui désigne l'utilisation des protocoles SSL au sein du protocole HTTP. Il vous permet de chiffrer la communication entre votre navigateur et le site web que vous consultez. Imaginez-vous sur un site de e-commerce. Vous devez saisir votre numéro de carte bancaire ainsi que les autres informations nécessaires au paiement. Sans HTTPS, toutes ces données sont transmises au site en clair. Cela signifie, qu'elles vont circuler sur le réseau local et sur Internet de manière totalement lisible par d'autres. Ainsi une personne tierce qui "lit" ce qui passe sur le réseau, peut récupérer les informations de votre carte bancaire. Il en va de même pour les logins et mots de passe de votre webmail ou encore lorsque vous communiquez via une messagerie instantanée ou bien sur un forum il est possible d'intercepter les messages. Une connexion chiffrée permet d'éviter ces problèmes, en rendant illisible tout ce que vous envoyez depuis votre navigateur. De plus, le chiffrement de vos communications permet de garantir l'intégrité des échanges, vous êtes ainsi assuré que les données n'ont pas été modifiée par un tiers au cours de leur tranversée du réseau. Le passage à HTTPS peut également être motivés par trois autres facteurs : depuis 2014 Google favorise le référencement des sites web qui proposent du HTTPS ; les navigateurs Chrome et Firefox à partir de janvier 2017 affichent des messages d'alertes directement dans les formulaires (login, mot de passe, carte de crédit) des pages HTTP ; Enfin, le protocole HTTP/2 a pour prérequis d'utiliser HTTPS. Ainsi, depuis 2017 bon nombre sites, dont mon blog, proposent par défaut le https.


Les deux font la paire

Avant de mettre en place ce fameux HTTPS,  il faut d'abord comprendre comment ça fonctionne. SSL utilise trois éléments. Un système de chiffrement asymétrique (RSA, par exemple) qui permet de générer une paire de clés (une clé privée et une clé publique), un système de chiffrement symétrique pour les données (AES , par exemple) et enfin un système de signature (SHA, par exemple), pour vérifier l'intégrité des données. Lorsque que le client et le serveur (le navigateur et le site web) veulent communiquer via HTTPS, ils choisissent les systèmes communs qu'ils vont utiliser. Il est d'ailleurs possible d'en voir la liste en cliquant sur le cadenas du navigateur.

Dernier point de la chaîne, le certificat. Celui-ci est fourni au visiteur par le site web. Il permet de s'assurer que le serveur qui vous répond est bien celui qu'il prétend être. Le certificat fourni un ensemble d'information dont les PKI. Ce sont des clés publics fournis par des autorités de certification dont la liste est enregistrée dans la navigateur. C'est là qu'intervient Let's Encrypt, une autorité de certification qui fournies gratuitement et de manière automatique des certificats. Avec l'aide de Mozilla, l'Electronic Frontier Foundation (EFF) et l'université du Michigan, Let's Encrypt utilise une implémentation serveur et client sous licence libre. Tout le projet est disponible sous Github, facilitant les démarches d'audits et laissant la place à un travail collaboratif d'amélioration continue. En pratique, pour fonctionner sur tous les navigateurs, Let's Encrypt va signer vos certificats avec un certificat intermédiaire. Celui-ci, est lui même signé par le certificat racine de Let's Encrypt, mais aussi par le certificat racine de l'Autorité de Certification IdenTrust qui est connue de tous les navigateurs Internet.


La clé du succès

Commençons directement par l'obtention de notre certificat. Pour cela les développeurs de Let's Encrypt ont créé le protocole ACME. Il permet entre autre, au travers de messages JSON échangés en HTTPS avec l'autorité de certification, de créer votre compte, d'enregistrer votre nom de domaine et d'obtenir votre certificat.

Let's Encrypt recommande d'utiliser un client ACME développé par l'Electronic Frontier Foundation : Certbot. Une liste de clients est disponibles ici : https://letsencrypt.org/docs/client-options/

L'installation de Certbot, passe par la copie du dépôt git.

git clone https://github.com/certbot/certbot.git
cd certbot

Pour dialoguer avec notre autorité de certification, nous allons utiliser le script : certbot-auto. La commande ci-dessous va nous permettre de créer un compte, de vérifier que le nom domaine nous appartient bien, puis de créer le certificat.

sudo ./certbot-auto certonly --webroot --webroot-path /srv/web/p3ter.fr --domains p3ter.fr,www.p3ter.fr --agree-tos --text --email

--webroot : l'authentification de votre site sera réalisée par un challenge ACME. Un fichier fourni par Let's Encrypt sera temporairement déposé sur votre serveur web.
--webroot-path : nécessaire pour le challenge ACME, il s'agit du chemin absolu vers le répertoire contenant votre site (généralement /var/www/).
-- domains : le ou les noms de domaines qui seront couvert par le certificat (séparés par des virgules).
-- adree-tos : permet d'accepter automatiquement les conditions d'utilisation de l'autorité de certification.
--text : lancer la commande en mode texte et non en mode graphique.
--email : l'adresse mail qui sera nécessaire en cas de perte du compte.

Si la commande à réussi, vous avez désormais un certificat et la clé privée associée. Ils sont disponibles dans le répertoire ci-dessous :

sudo tree /etc/letsencrypt/live

cert.pem : le certificat.
privkey.pem : la clé privée.
chain.pem : le certificat intermédiaire.
fullchain.pem : le certificat racine et intermédiaire.

La prochaine étape consiste à paramétrer le serveur web pour utiliser le HTTPS, ainsi que le certificat et sa clé privée. Pour cela je vous recommande cet article sur ce même blog. Dans mes exemples j'utilise le serveur web NGINX, l'opération consiste à modifier le virtualhost, pour rediriger le traffic http vers https, et pour fournir le certificat et sa clé privée. Les paramètres supplémentaires ssl_protocols et ssl_ciphers, permettent de restreinte la liste des protocoles mis à disposition des visiteurs dans le but de s'appuyer sur les protocoles les plus fiables.

Ci-dessous un extrait de virtualhost pour NGINX, qui permet de rediriger les requêtes HTTP vers du HTTPS et qui utilise notre clé et son certificat Let's Encrypt. C'est la configuration minimale en terme de sécurité.

server {
  listen 80;
  server_name mon.site.fr;
  return 301 https://$server_name$request_uri;
}
server {
  listen 443 ssl;
  (...)

  ssl                               on;
  ssl_certificate             /etc/letsencrypt/live/mon.site.fr/cert.pem;
  ssl_certificate_key     /etc/letsencrypt/live/mon.site.fr/privkey.pem;
  ssl_protocols              TLSv1.2 TLSv1.1 TLSv1;
  ssl_ciphers                 ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM;
  ssl_prefer_server_ciphers   on;

  (...)
}

Ensuite il suffit de redémarrer son serveur web, pour prendre en compte ces modifications.

sudo systemctl restart nginx

L'autre force de Let's Encrypt et de Certbot c'est la possibilité de renouveler automatiquement le certificat. En effet, celui-ci après 90 jours arrivera à expiration et affichera un joli message d'alerte sur le navigateur. Pour éviter ça, nous allons créer un script qui sera lancé automatiquement une fois par mois, en utilisant Cron (plus d'info).

sudo vim /etc/cron.mounthly/certbot.sh

Ce script est très basique et ne fera que lancer certbot avec les mêmes paramètres que précédemment, mais en ajoutant --renew-by-default pour seulement renouveler le certificat.

#!/bin/bash
cd /home/pedro/git/certbot
./certbot-auto certonly --webroot --webroot-path /srv/web/p3ter.fr --domains p3ter.fr,www.p3ter.fr --agree-tos --text --email --renew-by-default

Ensuite il suffit de donner les droits d'exécution au script, pour que Cron puisse le lancer.

sudo chmod u+x /etc/cron.mounthly/certbot.sh

Savoir garder un secret

En guise de conclusion, je souhaite simplement attirer votre attention sur le fait que, comme dans la vrai vie, on ne confit pas un secret à n'importe qui. Dans le cadre du chiffrement c'est la même chose : votre clé privée doit rester un secret bien gardé. Par exemple, lorsqu'on utilise un service de mail hébergé par un tier, au hasard Google, c'est bien lui qui est propriétaire de la clé privée. Toute une conversation par mails chiffrée avec PGP peut tout à fait être lue par le tiers qui a fourni la clé de chiffrement.

Il existe en revanche des solutions décentralisées basées sur le protocole Tor, qui apportent une protection bien meilleur, dont j'espère vous parler prochainement sur ce blog.

Pour finir, j'aimerais vous recommander le blog de Aeris (membre de l'équipe de Cozy Cloud) et fin spécialiste du chiffrement. Vous y trouverez : un article sur les limites de Let's Encrypt, un article pour approfondir les systèmes de chiffrements et les comparer, et enfin un outil qui vous permettra de tester le niveau de sécurité d'un site web à partir de son URL. Du coté de Mozilla il existe Observatory un autre outil d'audit de la sécurité de votre site.


Un article à retrouver sur P3ter.fr

Gravatar de P3ter
Original post of P3ter.Votez pour ce billet sur Planet Libre.

Thuban : Bilan libre du mercredi (6)

mercredi 3 mai 2017 à 16:08

C'est mercredi, l'heure pour un autre bilan libre :P :

Sinon, car tout ne tourne pas ici, sachez qu'OpenBSD a publié ses premiers patches de sécurité, le projet suckless.org a publié un nouveau dmenu, et arpi continue de bosser pour les amoureux de debian.

Pour info, les bilans seront plutôt mensuels désormais, pour des raisons relatives au boulot et à la vie, tout simplement.

Bon après-midi les enfants :)

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.

Articles similaires

Carl Chenet : Édito de mai 2017

mercredi 3 mai 2017 à 00:00

Après de bonnes petites vacances à Los Angeles en fin de mois dernier et la publication de mes activités du Libre en avril 2017 (article en anglais), voici l’édito de mai 2017.

Le réseau social Mastodon

Beaucoup de travail sur le réseau social Mastodon, avec des rapports de bugs en cours sur Mastodon.py, la bibliothèque Python permettant d’interagir avec les instances Mastodon et sur toot, un outil en ligne de commande pour poster vers Mastodon. Le projet est jeune et évolue vite. Également un nouveau projet lié à ce réseau social à venir très très vite.

Mon compte perso : https://mastodon.social/@carlchenet

masto-carlchenet

 

Documentation de mes projets personnels

J’ai beaucoup publié le mois dernier sur ce blog au sujet de mes projets personnels comme Feed2tweet, Retweet ou Feed2toot. Cela permet à la fois de les faire connaître, de développer comment utiliser certaines fonctionnalités intéressantes et de créer de la documentation un peu moins aride que la documentation officielle, qui peut décourager lorsqu’on cherche directement dedans sans être déjà un peu familier du projet. Un billet de blog qui couvre le sujet que vous cherchez, c’est tout de suite plus motivant 🙂

Évolution de ma page Liberapay

Ma page Liberapay : https://fr.liberapay.com/carlchenet

Grâce à de nombreux dons que je remercie systématiquement via les réseaux sociaux (en particulier Mastodon ;), les contributions à ma page Liberapay permettent d’augmenter mon revenu lié à mes actions dans le Logiciel Libre. Je n’en suis qu’au début mais c’est un grand honneur de recevoir des dons et mes remerciements via les réseaux sociaux ainsi que mon billet récapitulatif mensuel vont permettre aux intéressés de suivre cela de près 😉

liberapay

Le mois de Mai au niveau personnel

Je suis dans une période où j’essaie beaucoup de choses et j’accorde beaucoup de temps à l’expérimentation et à l’échange avec la communauté. N’hésitez donc pas à me solliciter via les réseaux sociaux ou les moyens plus traditionnels.

 

 

 

Gravatar de Carl Chenet
Original post of Carl Chenet.Votez pour ce billet sur Planet Libre.

Articles similaires

Jean-Baptiste Holcroft : Les traducteurs francophone de KDE redémarrent

mercredi 3 mai 2017 à 00:00

L’équipe de traducteurs francophones de KDE reprend le travail ! Suite à un message du mainteneur de Kwave – Thomas Eschenbacher faisant un appel aux traducteurs francophones, plusieurs personnes se sont dites intéresser pour contribuer. Faute de coordinateur actif pendant quelques mois, l’équipe était tombée en sommeil, Ludovic Grossard en a donc profité pour relancer l’équipe.

Si vous aimez la traduction, KDE et son écosystème, n’hésitez pas à rejoindre cette liste, y proposer vos services et à parcourir cette page qui sembre lister tous les liens utiles : French Team (fr).

À savoir : l’équipe KDE utilise beaucoup Pology et Lokalize quelques notes sur la grammaire, leur dictionnaire,

Vincent Pinon résume les étapes clefs de cette façon : installer Lokalize, télécharger le fichier.po de kwave (exemple), traduire le paquet et le renvoyer sur la liste.

En complément, il propose comme astuce : télécharge un (ou plusieurs, voir tous) dossiers de traductions KDE, et dans Lokalize, les « ajouter à la mémoire de traduction », comme ça il y a plein de messages déjà saisis ou proches : ça permet d’aller plus vite et d’avoir une bonne cohérence.

Je ne connais pas encore le détail du fonctionnement de l’équipe KDE, mais je souhaie bon courage à cette équipe !

Gravatar de Jean-Baptiste Holcroft
Original post of Jean-Baptiste Holcroft.Votez pour ce billet sur Planet Libre.

OLPC France : Des tablettes équipées de Sugarizer dans une classe à Saint-Ouen

mardi 2 mai 2017 à 10:53

Grâce au soutien de la Fondation L’Oréal nous avons lancé en début d’année le premier déploiement de Sugarizer sur des tablettes Android à l’école Mandela, à Saint-Ouen. Premier compte-rendu d’utilisation.

Depuis la Toussaint, l’enseignante de la classe de CM1 de l’école Mandela utilise des tablettes équipées de la suite pédagogique libre Sugarizer, tablettes prêtées par OLPC France.

Ces tablettes évolueront en fonction des besoins des enseignants, tant au niveau matériel qu’au niveau des applications, et un serveur viendra donner accès aux fonctions de partage de Sugarizer, ainsi qu’à des contenus accessibles sans connexion internet.

Parmi les applications de Sugarizer régulièrement utilisées par les élèves, nous retrouvons Labyrinth (qui permet de faire des cartes mentales de manière ludique et intuitive), et Speak (synthèse vocale des écrits des élèves).

Des applications supplémentaires Android ont été demandées par l’équipe, et installées en complément (Scratch junior, Book Creator, …). Elles peuvent être lancées directement depuis l’environnement Sugarizer OS.

Les projets de la classe de Sonia Carril

Créer un livre numérique

Les élèves de la classe de Sonia se sont lancés dans un projet prévu sur l’année à partir des revues « Mon petit quotidien » : chaque enfant choisit un quotidien et approfondit ses connaissances sur le sujet choisi. L’élève utilise diverses ressources trouvées à la médiathèque, dans la classe ou sur le web pour en faire un livre et un exposé. Afin de rendre ces livres plus ludiques, les élèves se sont emparés de l’application Book Creator : Chaque élève crée son propre livre et y intègre ses textes rédigés, les photos qu’il sélectionne, des dessins et des bandes sons – le texte de la page est lu par l’élève, dans le but de rendre accessible à tous, même les non-lecteurs.

Exemple avec BookCreator

Exemple d’utilisation de BookCreator

L’initiation au code

Depuis le début de l’année, l’enseignante fait découvrir à sa classe les différentes écritures (les hiéroglyphes égyptiens, idéogrammes chinois, …) afin de leur faire comprendre que notre alphabet n’est pas le seul mode de communication existant. A partir de manipulations simples, tirées du livre « 1, 2, 3, codez ! » de La Main à La Pâte, les élèves découvrent le langage informatique : ils commencent en créant des « messages secrets » en binaire. Suite à cela, ils apprendront à diriger un personnage grâce à l’application Scratch junior pour en faire un jeu ou une animation.

Apprendre à organiser sa pensée

Les élèves ont besoin d’outils pour organiser leur pensée et mieux mémoriser les notions rencontrées. La création de carte mentale se révèle être un bon outil pour cela. C’est pourquoi l’enseignante les initie à cette structuration des idées : l’idée principale s’inscrit au centre, et l’on développe les informations annexes par branches. La classe commence l’appropriation de cette méthode sur papier, chacun pourra produire sa carte mentale sur sa tablette par l’intermédiaire de l’activité Labyrinth, intégrée à Sugarizer. Celle-ci peut ainsi être enregistrée et partagée entre tablettes, vers le TNI ou l’utiliser à la maison sur une clé USB.

Les cartes mentales avec l'activité

Les cartes mentales avec l’activité « Labyrinthe »

 

A suivre : la mise à jour et l’appropriation du serveur de contenus, et les autres activités !

Gravatar de OLPC France
Original post of OLPC France.Votez pour ce billet sur Planet Libre.

Articles similaires