SheevaPlug

Let's encrypt !

Monday, 08 January 2018
|
Écrit par
Grégory Soutadé

Logo Let's encrypt

Au revoir 2017, bonjour 2018 ! Alors que l'actualité brûlante du moment tourne autour de la faille de sécurité trouvées sur différents processeurs supportant l'exécution spéculative (faille non triviale à exploiter), j'ai pour ma part choisi de passer à Let's Encrypt. Il s'agit d'une organisation à but non lucratif dont l'objectif est de promouvoir l'utilisation de connexions sécurisées (SSL/TLS) sur internet. Pour ce faire, elle propose la génération gratuite (et scriptée) de certificats pour le protocole HTTPS. Elle trouve de plus en plus les faveurs des webmasters, surtout quand on sait qu'un certificat coûte entre 15€ et plusieurs milliers d'euros par an (avec des garanties, tout ça, tout ça).

Leurs certificats sont déployés depuis plus de deux ans maintenant et il faut dire que ça marche plutôt bien ! Auparavant, j'utilisais ma propre autorité de certification, ce qui permet de contrôler finement les paramètres du certificat final, vérifier que l'on n'est pas attaqué... Mais il faut reconnaître que pour la navigation courante et surtout pour gPass, avoir un certificat reconnu de base est devenu une nécessitée.

Surtout que let's encrypt fourni l'utilitaire certbot (disponible dans les paquets Debian) qui s'occupe de (re-)générer, valider, configurer automatiquement tout ce qu'il faut. Il n'y a qu'à renseigner une adresse mail valide ainsi que la liste des domaines concernés.

J'ai eu deux erreurs lors de cette procédure. La première :

Domain: denote.soutade.fr
Type:   unauthorized
Detail: Incorrect validation certificate for tls-sni-01 challenge.
Requested
605840d8f5902f3f5f9b465e90fefda9.5e9055daac5e4439a0d768344e093378.acme.invalid
from 89.95.86.199:443. Received 1 certificate(s), first certificate
had names
"58d2ce91621ca3bc9dad2ae778ba8110.6f005c32f7a4345e14b2120f34d7e6c7.acme.invalid,
dummy"

Et la seconde concernant le nom de domaine teamazurevasion.fr que j'héberge également sur le même serveur (le DNS pointe vers soutade.fr, ça ne plaît pas trop au robot).

Domain: teamazurevasion.fr
Type:   unknownHost
Detail: No valid IP addresses found for teamazurevasion.fr

Il faut dire que ma configuration est un peu particulière puisque j'ai un premier serveur web/proxy (tournant sous nginx) qui s'occupe des sites statiques ainsi que de la liaison sécurisée (TLS). Il communique par socket avec un second serveur (Apache) pour toute la partie dynamique (PHP, Django). La solution consiste donc à stopper le service nginx et utiliser le mode standalone (une fois le port 443 libéré) pour (re-)générer mes certificats :

service nginx stop
certbot certonly --standalone --expand -d soutade.fr -d www.soutade.fr -d blog.soutade.fr
-d demo-gpass.soutade.fr -d denote.soutade.fr -d dynastie.soutade.fr -d gpass.soutade.fr
-d gpass-demo.soutade.fr -d iwla.soutade.fr -d music.soutade.fr
service nginx start

Une petite entrée de plus dans /etc/crontab et voilà, je n'ai plus à me soucier de la gestion de mes certificats ! Bon, j'aurais également pu déployer des scripts dans /etc/letsencrypt/renewal-hooks/.

J'attendais avec impatiente l'arrivée des wildcards (*.nom.de.domaine) qui devaient être intégrés à partir du 4 janvier, mais étant donné que certbot ne génère qu'un seul fichier certificat (embarquant tous les noms de domaines), j'ai finalement sauté le pas. Bien sûr, un wildcard sera plus pratique pour tout ce qui n'est pas configuré explicitement au niveau de mes serveurs webs. Activation prévue fin février, attendons de voir.

Sept ans

Friday, 04 August 2017
|
Écrit par
Grégory Soutadé

Gâteau 7 ans

Une année de plus, l'occasion de faire un nouveau bilan ! La septième année est, comme le cap des trois ans, un marqueur pour les couples, une sorte de "quitte ou double". Cette année, j'ai été très occupé à la réalisation du chrono (v1 et v2) ce qui m'a laissé moins de temps pour prendre la plume sur d'autres sujets.

Côté logiciels, il y a eu quelques corrections mineures sur IWLA et KissCount, mais surtout la sortie de la version 0.8 de gPass. Celle-ci a demandé pas mal de travail, mais concrétise le passage aux Webextensions de Firefox, avec à la clé une meilleure sécurité (le système cryptographique a été retravaillé). J'ai d'ailleurs été agréablement surpris de voir qu'il y avait une centaine d'utilisateurs côté Chrome et une trentaine côté Firefox.

Néanmoins, il faut bien reconnaître que, malgré la diversité des sujets abordés (donc le nombre d'articles publiés), la fréquentation n'a cessé de baisser depuis un an (comme indiqué dans mon bilan précédent). Pour être exact, le nombre de visiteurs mensuel a été divisé par deux entre juin 2016 et juin 2017, avec une embellie en juillet dernier. Si ce facteur statistique, aujourd'hui en berne, représente la double récompense de faire plaisir et d'encourager à la poursuite de l'aventure, ce n'est évidemment pas l'objectif ultime. Le réel objectif est d'une part de pouvoir s'exprimer librement et, d'autre part d'être utile. Donc même s'il n'y avait qu'une visite quotidienne, ce serait utile.

Quelques chiffres (entre parenthèses, les chiffres des années précédentes) :

  • 30 articles publiés (31, 34, 49, 50, 60, 60)
  • 9 510 visites (23 800, 21 300, 25 000, 12 000, 18 000, 9 000)
  • 17 Go de données envoyées (17,9, 9, 5.5, 2.7, 2.5)
  • 20 180 pages affichées (26 700)

Le fameux top 10 qui cumule pour cette année 67% des visites (en gras, consultation principalement pour les images. Entre parenthèses, l'année de publication) :

Une seule entrée (Bitcoin en interne), qui date pourtant d'août 2015. Le reste n'est qu'un changement dans l'ordre du classement.

Quid de la suite ? Même si les articles sont plus consistants (donc plus intéressants pour la plupart), je dois admettre qu'il devient de plus en plus difficile d'alimenter le blog (moins de temps, mois de sujets). Cette année, 1/5 des publications contiennent beaucoup de photos, ce qui alourdit particulièrement le temps de chargement. Une bonne nouvelle concernant ce point en particulier devrait arriver bientôt, avec, pourquoi pas, le support d'IPv6 ! Ma cubox (serveur principal) n'a pas encore été mis à jour vers la nouvelle version stable de Debian (stretch), mais le serveur de secours (Sheevaplug) a parfaitement passé l'étape de la migration (modulo quelques fichiers de configuration à changer).

IWLA 0.4

Monday, 30 January 2017
|
Écrit par
Grégory Soutadé

Capture d'écran IWLA

Une petite version d'IWLA est sortie. Les changements ne sont pas extraordinaires, mais il y a deux corrections de bug qui méritent de paraître. Au menu cette année :

  • Ajout de l'option -p qui permet de ne regénérer que l'affichage (sans la phase d'analyse)
  • Affichage de la bande passante des robots (possibilité de n'afficher que le top 10 pour gagner de la place)
  • Deux bugs corrigés concernant la compression des fichiers (dont un qui pouvait entraîner des corruptions de base de données).

À vos téléchargements !

Astuce IWLA : extraire les 10 meilleurs articles

Monday, 08 August 2016
|
Écrit par
Grégory Soutadé

Après avoir ouvert le champomy pour les 6 ans du blog, je reviens rapidement sur IWLA car j'aime m'auto extasier sur ce petit outil. L'idée de base était de remplacer AWSTATS par quelque chose de plus facilement "hackable", ce qui est chose faite. Si on rajoute la concision du langage Python par dessus, on obtient un script du genre :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import argparse
import gzip
import pickle
import re
import operator

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Statistics extraction')

    parser.add_argument('-f', '--file', dest='file',
                        help='Comma separated IWLA databases')

    args = parser.parse_args()

    blog_re = re.compile(r'^.*blog\.soutade\.fr\/post\/.*$')

    big_stats = {}

    for filename in args.file.split(','):
        with gzip.open(filename, 'r') as f:
            print 'open %s' % (filename)
            stats = pickle.load(f)
            print 'unzipped %s' % (filename)
            top_pages = stats['month_stats']['top_pages']
            for (uri, count) in top_pages.items():
                if not blog_re.match(uri):
                    continue
                big_stats[uri] = big_stats.get(uri,0) + count
            print 'analyzed %s' % (filename)

    print '\n\nResults\n\n'

    for (uri, count) in sorted(big_stats.items(), key=operator.itemgetter(1), reverse=True)[:10]:
        print '%s => %d' % (uri, count)

Que fait-il ? Il va tout simplement appliquer un filtre sur les pages du blog qui concernent les articles pour en extraire les 10 les plus consultées. Ce qui me fait gagner du temps pour mon bilan annuel !

Bien sûr, on peut créer des tas d'outil indépendants qui vont extraire et manipuler les données pour les mettre en forme, le tout avec une facilité déconcertante. Mieux encore, créer un plugin pour l'intégrer directement dans la sortie HTML quand ceci est nécessaire !

Six ans

Thursday, 04 August 2016
|
Écrit par
Grégory Soutadé

Gâteau 6 ans

Le blog a six ans ! L'occasion de faire le petit bilan annuel. Les premières pensées qui me viennent à l'esprit vont vers les victimes d'une année noire (une de plus...). Une année où la France et l'Europe en général ont re découvert la barbarie aveugle. Les nouvelles d'un attentat au moyen orient étaient tellement (et tristement) courantes que l'on n'y faisait plus attention. Le fait que ces mêmes actes se passent sous notre nez a un impact totalement différent. Qui plus est quand on aurait pu se trouver soit même sur les lieux.

Paris, Bruxelles, Nice, Munich, Saint-Etienne-du-Rouvray. Autant de villes qui ont connu l'horreur. Difficile dans ce contexte de ne pas tomber dans une haine primaire. Difficile aussi de sortir sans avoir un sentiment de suspicion permanent.

Pour autant, il faut s'accrocher à ses idéaux, continuer à vivre.

Les statistiques de cette année seront déséquilibrées. En effet, j'ai décidé de ne plus compter les visites ne correspondant qu'à un seul élément (par exemple, quand on recherche une image et que l'on n'affiche que celle-ci sans visiter le site). Changement qui s'est opéré à partir de janvier 2015. Malgré cela, le nombre de visites totale est en légère hausse. La masse de données envoyée également. Cela provient des reportages photos qui sont très gourmands en bande passante.

On obtient en moyenne 65 visites par jour, là aussi, en hausse. Pourtant, depuis mai, il y a une baisse significative des visites qui s'établit à ~26/jour (non visible ici). Cette tendance est compensée par les bons chiffres de l'année passée, mais devrait se retrouver dans les statistiques de l'année prochaine.

Côté publication, encore une baisse avec seulement 31 articles, même si 3 ou 4 articles ont été avortés ou repoussés. Je dois dire que, si la matière première me manque, j'éprouve toujours autant de plaisir dans la rédaction. En substance, les articles sont un mélange de technique (dont 4 en anglais), découverte, politique. Mélange qui reste fidèle à l'objectif d'un blog pluridisciplinaire.

Côté technique, il y a la création de Dénote. Je n'aurais jamais cru que cette bête application de prise de notes puisse être aussi utile ! La fermeture de facebook2email, mais aussi et surtout, une mise à jour d'IWLA qui, conjointement avec iptogeo, devient de plus en plus puissant !

Quelques chiffres :

  • 31 articles publiés (34, 49, 50, 60, 60)
  • 23 800 visites (21 300, 25 000, 12 000, 18 000, 9 000)
  • 17,9 Go de données envoyées (9, 5.5, 2.7, 2.5)
  • 26 700 pages affichées

Le fameux top 10 (en gras, consultation principalement pour les images. Entre parenthèses, l'année de publication) :

C'est assez impressionnant de constater qu'il est quasi identique à celui de l'année dernière (modulo le classement), avec un seul article qui fait son entrée (position 8). Si on fait le cumul du top 10, on obtient 31,4 % des pages affichées. Bien sûr, tous ces chiffres ne tiennent pas compte de la page d'accueil.

Un autre point amusant : L'article sur la liseuse (GAME_OVER) est quasiment devenu (via les commentaires) un forum sur les firmwares Bookeen !

Toujours d'après mon analyseur de statistiques, il y a 3 personnes qui me suivent via les flux RSS et Atom.

On peut donc considérer que ce fut une bonne année en terme d'audience. Quels sont les projets pour l'année prochaine ? Tenir encore un an de plus ! Ce qui n'est pas du tout évident. De leurs côté, les outils arrivent à maturité, je ne fais presque plus que de la maintenance. Néanmoins, il faudrait retravailler le design du blog (notamment pour qu'il s'adapte aux petits écrans).