Gemini

Aujourd’hui je voudrai vous présenter Gemini, un petit espace sur Internet qui  est encore assez nouveau. Peut-être le connaissez vous déjà. Dans ce cas, passez votre chemin. C’est un billet bâclé de toute façon.

Ainsi Gemini est un nouveau protocol Internet permettant d’accéder à du contenu de type “text/gemini”. C’est assez ressemblant à Markdwown. “text/gemini” est un sous-ensemble du media de type “text” avec un charset par défaut UTF-8. Il est uniquement possible d’afficher un lien par ligne afin d’encourager les structures sous forme de liste. Les lignes sont très importantes et ont un type (par exemple les lignes de texte ou alors une ligne pour un lien). Les trois premiers caractères d’une ligne permettent d’identifier le type d’une ligne sans ambiguïté. Je vous renvoie à la documentation pour les détails. C’est très intéressant. Il faut la lire.

Avec Gemini il n’y a donc pas de contenu HTML. Mais non plus pas de JavaScript, pas de cookies, pas de session, pas de headers dans les requêtes et pas de méthode POST (pour soumettre des formulaires). Alors comment fait on pour s’authentifier à un service ? Et bien on utilise la fonctionnalité de certificat client de TLS. Il est donc important d’utiliser un bon navigateur. Personnellement, j’utilise Lagrange. La capture suivante est bon un exemple.

Agrégateur de nouvelles gemreader.

Si vous essayez d’aller à cette adresse vous verrez qu’il n’y a pas de formulaire d’authentification. Il suffit de se générer un certificat client TLS en cliquant sur l’icône juste à gauche de la barre de navigation. Vous pourrez alors choisir un CN (Common Name), une date d’expiration et le serveur pour lequel votre certificat sera utilisé. C’est donc du self-signed. Par la suite le navigateur présentera automatiquement ce certificat au serveur. Concernant ce service – gemreader, un agrégateur de nouvelles – vous n’aurez même pas besoin de vous créer un compte. La porte vous est ouverte pour autant que vous ayez généré votre certificat. Aucune page d’authentification.

La sécurité repose sur le principe de TOFU, Trust On First Use. Voici un exemple d’implémentation de TOFU d’un client Gemini vraiment sympa. Basiquement, c’est comme lorsque vous accepté une clé publique d’un serveur dans votre fichier ~/.ssh/known_hosts. Ce fichier sert à vérifier l’identité d’autres systèmes (qui sont déjà connus). C’est un principe ancien, simple et efficace. Et surtout qui va à l’encontre du modèle des PKI qui a, il faut l’avouer, certains défauts. Mais ce n’est pas le sujet. Voici juste un extrait de la documentation sur ce point:

Clients can validate TLS connections however they like (including not at all) but the strongly RECOMMENDED approach is to implement a lightweight “TOFU” certificate-pinning system which treats self-signed certificates as first- class citizens.”

C’est assez clair.

Alors maintenant la question: y-a t’il quelque chose à lire dans ce coin de l’Internet ? J’ai un peu donné la réponse au début. Ce protocole est jeune, donc ne vous attendez pas à des milliards de serveurs. Mais cependant, la communauté semble assez dynamique et il est vrai que cet espace ne cesse de grandir.

Taille de l’espace Gemini dans le temps.

Ce graphique provient de Wikipedia, mais je ne peux faire de référence avec un lien hypertexte. Vous avez qu’à chercher.

J’aime beaucoup lire des pages Gemini. Elles sont épurées et c’est vachement agréable. On peut trouver des choses assez intéressantes. Parfois, même souvent, un peu décalées (question de point de vue, me direz vous). Et pas seulement d’auteurs avec des profils très techniques. Également des artistes. J’ai trouvé quelques blogs sympas. C’est rigolo de trouver des blogs actifs et flux de nouvelles. Mais ne vous attendez pas à trouver des photos de chats, de licornes ou de seins. Désolé. Par contre, il n’y a aussi pas de publicité et pas de tracker.

Bref, si vous voulez tester. Je vous invite à le faire. Cherchez un navigateur qui vous convient.

Si vous désirez essayer un serveur, je ne peux que vous conseiller gmnisrv. Super simple à installer et à configurer. Il gère ce que l’on pourrait appeler des hôtes virtuels ainsi que la génération de certificat TLS.

# Space-separated list of hosts
listen=0.0.0.0:1965 [::]:1965

[:tls]
# Path to store certificates on disk
store=/var/lib/gemini/certs

# Optional details for new certificates
organization=gmnisrv user

[cedricbonhomme.org]
root=/srv/gemini/cedricbonhomme.org

[newspipe.org]
root=/srv/gemini/newspipe.org

Et c’est tout. Lorsque le serveur est exécuté avec ce fichier de configuration, les certificats pour ces deux “virtualhosts” (je ne sais comment appeler ceci…) seront générés dans le store. Les chemins définis dans les variables root sont des dossiers où il y aurait par exemple un fichier index.gmi. Donc dans un format proche de Markdown.

J’ai testé le serveur gmnisrv en dix minutes, sur localhost. Ne vous étonnez pas de voir bientôt mon espace dans le Gemini Space. Et aussi quelques modifications dans Newspipe.

Sachez aussi que curl supporte Gemini. Oui, vous avez bien lu. curl supporte Gemini. J’adore encore plus curl.

À bientôt dans le Gemini Space.