Simon Vieille


CTO at Like-inn Développement, casual worker at IUT-BM, symfony expert and debian addict

Let's Encrypt - Comment se faciliter la vie ?

Mon serveur web est composé d'un frontend nginx et d'un backend apache. L'ensemble de mes certificats (à l'exception du wildcard deblan.org) est géré par Let's Encrypt. Mon problème jusqu'à aujourd'hui était que lors de la création ou le renouvellement d'un certificat, mon service nginx devait être coupé pour réaliser l'authentification nécessaire à la validation faite par Let's Encrypt.

Le service nginx, tel que je l'ai configuré, possède un fichier de configuration unique qui écoute sur le port 80. Ce fichier permet :

  • d'indiquer mon backend apache
  • de gérer les problématiques de cache des assets (images, css, javascripts, etc.)

Vous pouvez remarquer l'include à la ligne 20. Voici le contenu du snippet :

Il identifie un répertoire unique où seront générés les fichiers d'authentification de Let's Encrypt. Il aura fallu créer ce répertoire au préalable (sudo mkdir -p /var/www/letsencrypt/).

Reste à présent 2 scripts :

  • celui qui permet de générer un certificat
  • celui qui permet de renouveler les certificats qui vont expirer

Pour la génération d'un certificat, j'ai souhaité une ligne de commande simple : le-get-certificate monsite.com www.monsite.com foo.monsite.com. Voici son contenu :

Edit : la commande cerbot renew fait le travail tout seul. L'intérêt de mon script pourrait d'ajouter rapidement des domaines à certifier en augmentant le CSR automatiquement.

Concernant le renouvellement, le script suivant s'appuie sur un fichier de configuration que vous devrez alimenter à chaque création de certificat. Il doit être créé à cet emplacement : /etc/letsencrypt/domains.conf. Voici à quoi il ressemble chez moi et j'ai ajouté la ligne nécessaire pour l'exemple de la commande de création :

Voici à présent le script que devra être exécuté périodiquement pour le renouvellement :

J'espère que cela pourra vous être utile et si vous avez des remarques, n'hésitez pas à m'en faire part :)


[livecoding] deblan/nginx-rtmp-auth: RTMP auth module (partie 1)

Je publie aujourd'hui une nouvelle vidéo issue du live réalisé sur la plateforme livecoding. Dans l'optique de réaliser une application d'authentification de stream (comme Twich ou Livecoding), je développe les outils pour valider l'utilisateur qui stream via une clé et le nom de sa chaîne. Il manque quelques minutes au début, je me suis rendu compte que je n'ai pas lancé l'enregistrement…L'ensemble du live est dipo sur livecoding et il manque l'installation de symfony et la configuration de Propel, les deux principaux outils sur lesquels je m'appuie.

J'en ai profité pour mettre en ligne un micro site web qui référence les vidéos. Ce n'est qu'une première ébauche mais vous y retrouverez l'ensemble des lives sans devoir fouiller sur YouTube. C'est par ici que ça se passe :)

Bon visionnage !


[livecoding] deblan/gist: issue #1

Voici la vidéo du live réalisée sur la plateforme livecoding. J'ai traité le premier ticket ouvert pour le projet Gist où il est question d'adapter la fonctionnalité de clonage pour un gist chiffré. Pour rappel, Gist est un service en ligne pour déposer du code (gist) qui peut-être modifié et versionné. L'outil intègre une solution pour chiffrer les contenus coté navigateur.

J'en profite pour vous informer qu'il y a quelques jours, j'ai publié la version 1.1.1 dans laquelle se trouvent un ou deux correctifs mais surtout la capacité d'affiner les accès à l'application (cf la documentation). Pour mettre à jour votre instance, il suffit de lancer la commande make update.

Bon visionnage !


[TIPS] Rocketchat : désactiver SSL sans l'interface d'administration

C'est en testant le logiciel franz, un outil qui permet de centraliser les clients web de pas mal de services de messageries dont Skype, Messenger et surtout Rocketchat. Comme j'ai ma propre instance de rocket, j'ai directement ajouté mon adresse mais manque de bol, ma version n'était pas compatible. Alors je me suis empressé de récupérer un build récent et j'ai mis à jour tout ça ! D'ailleurs, c'est plutôt simple car je n'ai eu qu'à remplacer le code source…

Bref, ça fonctionnait :

Rocketchat deblan

Et en regardant toutes les nouveautés, j'ai par malheur forcé SSL alors que l'instance est derrière un proxy… Pourtant c'était écrit noir sur blanc mais je n'ai pas lu. Quoiqu'il en soit, impossible d'accéder à l'interface et j'ai du attaquer directement la base mongodb. J'ai lancé la commande mongo et je suis arrivé sur un shell.

> show dbs # Permet récupérer la liste des bases
> use rocketchat # J'indique dans quelle base de je veux travailler
# Je ne sais pas s'il y a plus sexy mais mongo est une première !
# Je passe simplement la valeur de l'option "Force_SSL" à false et j'enregistre
> db.rocketchat_settings.find({_id: "Force_SSL"}).forEach(function(o) { 
    o.value = false; 
    db.rocketchat_settings.save(o);
});

Une fois Rocketchat relancé, tout est rentré dans l'ordre !


Nouvelle version de Gist

Je viens de publier une nouvelle version de Gist, une application en ligne qui permet de publier du code en ligne et de le versionner. Les modifications apportées concernent la page qui liste ses gists quand on a un compte. Elle contient à présent une pagination et il est possible de filtrer et supprimer les gists. Cette suppression n'est cependant pas complète : seul l'enregistrement en base de données disparaît. Comme le répertoire de gists est un dépôt git, il n'est pas possible de supprimer définitivement le gist et ses clônes.

Gist

Si vous souhaitez mettre à jour votre instance, rien de bien compliqué :

La documentation est disponible sur mon Gitnet et Github.