CACert sous Firefox OS

\"FirefoxJe viens de faire l\’acquisition d\’un Open C de ZTE sous Firefox OS. Après une première étape consistant à rooter le téléphone et à le passer sous Firefox OS 2.1 (qui est très stable), je me suis lancé dans la configuration de mon compte mail Aquilenet (Fournisseur d\’accès à Internet Associatif en Gironde). Seulement voilà… les certificats de sécurité d\’Aquilenet sont signés par CACert. Or, cette autorité de certification n\’est pas \ »de confiance\ ». On pourrait débattre des heures sur la stupidité de ce système d\’autorité de confiance mais ce n\’est pas le propos :-)

Toujours est-il que Firefox OS 2.1 ne permet pas de configurer de compte mail si l\’autorité de certification n\’est pas dans sa liste blanche. La solution ? Ajouter CACert à la main dans cette liste ! Pour ce faire, il existe un \ »tuto\ » qui est proposé en premier résultat lorsqu\’on cherche sur le web à résoudre ce problème. Sauf que ce tutoriel consiste en l\’exécution d\’un script sans la moindre documentation. Après lecture, le script est certes tout à fait sûr mais il manque pas mal d\’informations pour le faire fonctionner. Je me propose donc de vous expliquer tout ça un peu plus en détail. Ce billet est donc directement inspiré du tutoriel en question.

Que va-t-on faire ?

Le principe est simple. Grâce à l\’outil adb, nous allons rapatrier la base de données des certificats de confiance de Firefox OS. Nous allons ensuite y ajouter le certificat de CACert grâce à un petit programme appelé certutil. Enfin, nous allons gentiment reposer cette base de donnée comme si de rien n\’était.

Les pré-requis

Je pars du principe que votre Open C est rooté.

Concernant le téléphone, il faut que le mode \ »débogage\ » soit activé. Vous pouvez le faire de la façon suivante : Paramètres > Développeurs > Débogage USB > ADB Uniquement

Sous Debian, il suffit d\’installer le deux paquets suivant, fournissant respectivement les outils adb et certutil :

$ apt-get install android-tools-adb libnss3-tools

Let\’s hack !

On va commencer par brancher le téléphone en USB et vérifier qu\’il est bien détecté par adb.

$ adb devices
List of devices attached
1a1b5c9 device

À partir de là, vous devriez être capable de vous connecter au téléphone. Un \ »adb connect <id_device>\ » est peut-être nécessaire si ce n\’est pas le cas. Pour vous connecter et obtenir une session :

$ adb shell
root@ZTE_P821A10:/ #

C\’est déjà un bon début ! L\’étape suivante consiste à récupérer le nom du dossier contenant la base de données des certificats. Ce dossier a un nom se terminant par \ ».default\ » et se situe dans \ »/data/b2g/mozilla\ ».

root@ZTE_P821A10:/data # cd /data/b2g/mozilla/
root@ZTE_P821A10:/data/b2g/mozilla # ls -d *.default
hyyegklw.default

L\’emplacement de la base de données dont nous avons besoin est donc chez moi : \ »/data/b2g/mozilla/hyyegklw.default\ ». Vous pouvez alors faire un petit \ »exit\ »  pour quitter la session sur le téléphone. Nous n\’utiliserons désormais plus de session interactive.

Les trois fichiers qu\’il nous faut récupérer maintenant sont les suivants : cert9.db, key4.db et pkcs11.txt. L\’idéal est de les récupérer dans un dossier réservé à cette manipulation et que nous pourrons supprimer à la fin de la procédure. Les commandes adb sont alors :

$ adb pull /data/b2g/mozilla/hyyegklw.default/cert9.db
$ adb pull /data/b2g/mozilla/hyyegklw.default/key4.db
$ adb pull /data/b2g/mozilla/hyyegklw.default/pkcs11.txt

Dans ce même dossier, nous allons maintenant créer un dossier \ »certs\ » dans lequel nous allons mettre la clé du certificat racine de classe 3 de CACert au format PEM. Cette clé est disponible ici : http://www.cacert.org/certs/class3.crt

Revenons maintenant dans le dossier contenant les fichiers de base de donnée. Nous allons utiliser l\’outil certutil pour ajouter une entrée pour CACert dans cette base. Une première commande permet de lister les autorités présentes dans cette liste blanche :

$ certutil -d \'sql:.\' -L

Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI

DigiCert SHA2 Extended Validation Server CA ,,
VeriSign Class 3 Secure Server CA - G3 ,,
GeoTrust SSL CA - G3 ,,
GeoTrust Global CA ,,
DigiCert High Assurance CA-3 ,,
Google Internet Authority G2 ,,
Symantec Class 3 EV SSL CA - G3 ,,
DigiCert SHA2 High Assurance Server CA ,,
DigiCert SHA2 Secure Server CA ,,
GeoTrust SSL CA ,,
TERENA SSL CA ,,
UTN-USERFirst-Hardware ,,
GeoTrust SSL CA - G2 ,,
GlobalSign Organization Validation CA - SHA256 - G2 ,,
DigiCert High Assurance EV CA-1 ,,

L\’option \ »-d \’sql:.\’ permet de dire à certutil quelle base de donnée interroger. En l\’occurrence il s\’agit de celle présente dans \ ».\ », soit le dossier courant. Nous allons à présent redéfinir un mot de passe vide pour cette base de données afin de pouvoir la modifier.

$ certutil -d \'sql:.\' -N --empty-password

Ajoutons maintenant la clé de CACert !

$ certutil -d \'sql:.\' -A -n \"class3.crt\" -t \"C,C,TC\" -i certs/class3.crt
$ certutil -d \'sql:.\' -L

Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI

DigiCert SHA2 Extended Validation Server CA ,,
VeriSign Class 3 Secure Server CA - G3 ,,
GeoTrust SSL CA - G3 ,,
GeoTrust Global CA ,,
DigiCert High Assurance CA-3 ,,
Google Internet Authority G2 ,,
Symantec Class 3 EV SSL CA - G3 ,,
DigiCert SHA2 High Assurance Server CA ,,
DigiCert SHA2 Secure Server CA ,,
GeoTrust SSL CA ,,
TERENA SSL CA ,,
UTN-USERFirst-Hardware ,,
GeoTrust SSL CA - G2 ,,
GlobalSign Organization Validation CA - SHA256 - G2 ,,
DigiCert High Assurance EV CA-1 ,,
class3.crt C,C,C

Détaillons un peu cette commande : l\’option \ »-A\ » signifie que nous voulons ajouter une entrée dans la base de données. À l\’inverse, l\’utilisation de \ »-D\ » supprimera une entrée. L\’option \ »-n \ »class3.crt\ »\ » permet de nommer cette entrée tandis que \ »-i certs/class3.crt\ » donne le chemin du certificat. Enfin, l\’option \ »-t \ »C,C,TC\ »\ » définit la confiance qu\’on souhaite accorder à ce certificat. La documentation de certutil l\’explique de cette façon :

-t trustargs Set the certificate trust attributes:
trustargs is of the form x,y,z where x is for SSL, y is for S/MIME,
and z is for code signing. Use ,, for no explicit trust.
p prohibited (explicitly distrusted)
P trusted peer
c valid CA
T trusted CA to issue client certs (implies c)
C trusted CA to issue server certs (implies c)
u user cert
w send warning
g make step-up cert

Une information importante ici : les arguments que je vous propose sont ceux utilisés sur le tutoriel évoqué précédemment. À la lecture du manuel, ils me semblent tout à fait raisonnables et rendent l\’utilisation de ma boite mail fonctionnelle. Ceci dit, il serait intéressant de creuser la question pour bien comprendre ce que tout ça implique. Vu que, je vous le rappelle, il est question de faire confiance à quelqu\’un pour une couche de sécurité…

Bref, la base de données est augmentée du certificat dont nous avons besoin. Il ne reste plus qu\’à remettre tout ça en place ! Mais avant tout, nous allons tuer le processus b2g que nous allons relancer une fois la base de données mise à jour sur le téléphone. Cette étape permet de prendre en compte cette modification sans procéder à un hard reboot.

$ adb shell stop b2g
$ adb push cert9.db /data/b2g/mozilla/hyyegklw.default/cert9.db
$ adb push key4.db /data/b2g/mozilla/hyyegklw.default/key4.db
$ adb push pkcs11.txt /data/b2g/mozilla/hyyegklw.default/pkcs11.txt
$ adb shell start b2g

Et voilà ! Le tour est joué ! Vous devriez dorénavant pouvoir configurer le client mail avec un serveur dont le certificat de sécurité est fourni par CACert.

Pourquoi (et comment) je quitte Google

\"LogoIl y a 3 ans presque jour pour jour, je publiais ici même un article : \ »Pourquoi je quitte Facebook\ ». Dans le même temps, je m\’étais monté un petit serveur afin de me libérer des services de Google et autres. Voilà donc 3 ans que ce serveur tourne en permanence (modulo une coupure de quelques semaines pour cause de déménagement). 3 ans pendant lesquels j\’ai migré petit à petit les services que je confiais à de grosses sociétés privées pour les héberger moi-même. Parmi ces services, on notera ceux que j\’utilise le plus : un aggrégateur de flux RSS (KriSS) couplé à une instance de Shaarli, plusieurs blogs dont celui-ci, un outil de statistiques (Piwik), un dépot SVN (Le premier qui troll sur SVN vs git, je tue un chaton), une galerie photo (PhotoShow) et j\’en oublie sûrement. D\’autres services auront eu leur place aussi pendant quelques temps comme un serveur Minecraft ou un serveur de streaming. Toujours est-il que malgré tout ça, il y a deux choses que je n\’ai pas encore changé : le mail et la recherche. Cependant, depuis quelques mois, j\’ai décidé de mettre en application mes convictions à propos du Net (neutralité, accès, protection des données personnelles). Je me suis beaucoup documenté et investi à différents niveaux de ce qui, je pense, ressemble à de l\'(h)activisme. Si vous vous intéressez au sujet, vous aurez compris où sont les problèmes : stockage et utilisation de nos données, jugements moraux, polices privées,  interception massive et j\’en passe. J\’aurais d\’ailleurs l\’occasion d\’y revenir très bientôt dans un billet parlant du chiffrement. Bref, il est donc temps pour moi de franchir le cap et de quitter définitivement Google! Ce sera long et fastidieux mais voilà déjà quelques pistes.

Concernant la recherche, j\’ai fait plusieurs tentatives avec Ixquick, DuckDuckGo ou encore en installant mon propre noeud Seeks. Mais il faut être honnête, la pertinence des résultats de Google et l\’habitude que j\’ai pris à les consulter font que ce changement demande un effort considérable. Vu le succès grandissant de DuckDuckGo ces derniers mois, c\’est vers lui que j\’ai décidé de me tourner pour le moment. En parallèle, je vais retenter l\’expérience Seeks qui est en parfaite adéquation avec le principe même d\’Internet.

\"Aquilenet\"Pour les mails, j\’ai pensé plusieurs fois à m\’auto-héberger. Ce qui m\’a bloqué est avant tout un problème de disponibilité. Entre la connexion qui peut couper ou un déménagement qui contraint de débrancher le serveur pendant près de 3 mois cette solution n\’était pas vraiment envisageable. La solution vers laquelle je me suis tourné est proposée par Aquilenet, fournisseur d\’accès associatif, membre de la fédération FDN. Je suis en effet adhérent à Aquilenet depuis au moins 2 ans (à raison de 15€ par an) bien que n\’étant pas abonné ADSL. En étant membre de cette association, j\’ai à ma disposition une adresse mail administrée par des gens passionnés et compétents. Qui plus est, le modèle de l\’association étant fortement basé sur sa communauté (comprendre \ »peu hiérarchique\ »), mon avis compte et je peux m\’investir pour maintenir toute cette infrastructure. Enfin, le tout est basé exclusivement sur du libre et est garanti sans filtrage! J\’ai dores et déjà commencé à migré mes abonnements vers cette adresse. Vous avez probablement le même type d\’association dans votre région, n\’hésitez pas à les contacter:

Enfin, la dernière étape sera par rapport à Android. J\’attend avec impatience les premiers téléphones grand public munis de FirefoxOS ou n\’importe quel autre OS complètement libre.

Tout ceci prendra du temps. Sans aucun doute. Mais c\’est la rançon de la liberté et de l\’indépendance.

Aquilenet, FAI associatif Aquitain : Interview d\’un des fondateurs

\"Aquilenet\"J\’avais déjà évoqué l\’association Aquilenet dans un billet précédent puisque c\’est elle qui avait organisé il y a quelques semaines la conférence \ »Internet et Libertés\ » en présence de Jérémie Zimmermann de la Quadrature Du Net.

Si je lui consacre entièrement un billet aujourd\’hui, c\’est parce que depuis quelques jours, ce FAI associatif a lancé officiellement ses ouvertures de lignes ADSL. Aquilenet se présente ainsi :

Aquilenet est une association fournisseur d\’accès à Internet (FAI), actuellement sur sa lancée de lignes ADSL \ »avec du vrai Internet\ » en Aquitaine depuis janvier 2011, membre fondateur de la Fédération FDN. Nous avons préféré attendre d\’avoir quelques lignes en fonction avant d\’ouvrir publiquement le service, il est maintenant temps pour de nouveaux adhérents de nous rejoindre, pour s\’abonner ou simplement nous soutenir !

Pourquoi Aquilenet ? Parce qu\’il s\’agit de \ »vrai Internet\ »: un Internet sans bridage, sans filtres, sans collecte d\’informations à des fins commerciales et sans contrainte à l\’innovation. Il s\’agit donc d\’un branchement direct au réseau avec des services fournis au maximum de la bande passante possible. Une IP fixe, (un reverse DNS, une délégation DNS, etc.), une interface de gestion de son compte, un coût mensuel maîtrisé. Étant une association loi 1901, Aquilenet offre de la transparence sur les comptes et n\’a pas d\’objectif de rentabilité. Nous facturons donc les lignes en fonction de leur prix de revient, et chaque adhérent peut le vérifier. L\’association n\’utilise que des solutions libres, ce qui nous permet d\’être dans une démarche de construction des services avec les adhérents. Chacun peut participer à développer l\’infrastructure…

Pour en savoir un peu plus, j\’ai interrogé Samuel Thibault un des fondateurs de l’association.

Bonjour Samuel, peux-tu te présenter brièvement?

Je suis enseignant-chercheur à l\’Université Bordeaux 1, spécialisé en calcul parallèle haute performance. Je suis par ailleurs développeur Debian, dont je m\’occupe de l\’accessibilité, et je suis un des mainteneurs de GNU/Hurd. De plus, je joue de la batterie et du trombone dans divers orchestres. Enfin, je suis trésorier d\’Aquilenet.

Peux-tu nous expliquer en quelques mots ce qu\’est Aquilenet?

Il s\’agit d\’une association pour remuer le réseau Internet en Aquitaine. Elle est notamment Fournisseur d\’Accès Internet: elle fournit actuellement un accès à Internet via des lignes ADSL. Elle compte également développer la structure du réseau Internet en Aquitaine: interconnexion locale et avec nos voisins à Brives, Sames, Toulouse, Lyon, … plutôt que systématiquement remonter à Paris.

Quel est l\’intérêt d\’un FAI associatif?

L\’intérêt d\’un FAI associatif est que les abonnés sont adhérents de l\’association, c\’est-à-dire qu\’ils ont droit de regard sur la politique menée par l\’association et peuvent mettre la main à la pâte: politique de non-filtrage, tarification (avec tarifs étudiants par exemple), développement de nouveaux services, etc.

Et pourquoi une implantation régionale?

Il y a plusieurs réponses. FDN est le premier Fournisseur d\’Accès Internet français encore en activité. Il se trouve qu\’il est associatif. Récemment, FDN a commencé à grossir de plus en plus (200 lignes ADSL à l\’heure actuelle), et cela commence à poser problème: il y a typiquement une centaine de personnes qui assistent à l\’AG ! Fonder des FAIs locaux, qui restent à taille humaine, permet de décharger en quelque sorte FDN. Fonder des opérateurs est par ailleurs bénéfique pour le réseau ! Lorsque l\’on regarde l\’implantation des LIRs en France (https://lirportal.ripe.net/maps/locator/) on note une centralisation extrême à Paris, alors que nos voisins européens voient leurs opérateurs répartis géographiquement. En France la topologie du réseau est essentiellement en étoile, or on sait bien que c\’est moins robuste et efficace qu\’un maillage. Fonder des opérateurs locaux est donc une manière de remailler le territoire. C\’est également une manière de dynamiser le réseau localement. Au datacenter de Bordeaux-Lac par exemple, il n\’y a pas d\’IX, l\’outil qui pourrait permettre aux PMI/PME de s\’interconnecter directement en local, plutôt que remonter tous les flux à Paris juste pour redescendre aussitôt à Bordeaux, encombrant ainsi les fibres entre les deux alors qu\’il suffit de mettre un câble en local. Aquilenet compte aider à la création d\’un GIXE qui s\’en occuperait. C\’est enfin un point de rencontre local pour les férus de réseau ! Aller à Paris juste pour causer switches Ethernet, c\’est onéreux. Un opérateur local peut organiser des rencontres locales pour causer, boire des bières, etc. qui sont autant d\’occasions de plus facilement convaincre des gens de s\’abonner à un FAI associatif.

Peux-tu nous expliquer comment tout ça fonctionne (à qui appartiennent les lignes? à quel niveau intervenez-vous? etc…)?

Aquilenet n\’est pour le moment qu\’une \ »marque blanche\ », c\’est-à-dire qu\’elle ne fait que commander des lignes à FDN pour le compte de ses adhérents, et récolter les sous :) Nous comptons par la suite nous occuper petit à petit de plus en plus des différents éléments de l\’accès Internet. Par ailleurs, FDN ne possède pas sa propre infrastructure ADSL et sous-traite à Nerim, qui lui-même sous-traite à SFR (cas dégroupé) ou à France Télécom (cas non dégroupé). Actuellement, ce qui se passe lors d’une prise de ligne ADSL dégroupée est donc:

  • un adhérent soumet sa demande de souscription à Aquilenet.
  • Aquilenet commande la ligne auprès de FDN, qui la commande auprès de Nerim, qui la commande auprès de SFR, qui la commande auprès de France Télécom.
  • SFR remonte la collecte ADSL à Paris et la livre à Nerim, qui la livre à FDN.
  • FDN réceptionne la collecte, et redistribue vers Internet via l\’opérateur alternatif Gitoyen.
  • SFR facture à Nerim, qui facture à FDN. Gitoyen facture à FDN. FDN facture à Aquilenet, qui facture à l\’adhérent.

Cela parait bien long comme chemin, il est vrai qu\’ajouter des intérmédiaires pourrait nuire. Il se trouve que la construction de ligne ne prend tout de même typiquement que quelques jours. Les intermédiaires prennent bien sûr leurs marges, mais de toutes façons pour l\’ADSL il n\’y a guère le choix: ni France Télécom ni free ne sont ouverts à fournir le service, SFR n\’accepte plus de traiter directement avec FDN, et malgré sa bonne volonté, Nerim n\’est pas forcément encline à établir des contrats avec de nombreux FAIs locaux. Poser soi-même des DSLAMs nécessite enfin un investissement bien trop important pour une association. Aquilenet n\’a donc qu\’un rôle purement administratif pour l\’ADSL, et sous-traite toute la technique à FDN. Une autre possibilité aurait été de n\’acheter que la collecte à FDN: le scénario aurait été le même, sauf que plutôt que redistribuer vers Internet, FDN aurait livré la collecte à Aquilenet, qui devrait alors se débrouiller pour redistribuer vers Internet. Le hic, c\’est que la livraison ADSL a à priori de toutes façons lieu à Paris, cela nous a donc semblé inutile de dépenser du temps pour finalement rester dans un scénario centralisé à Paris, nous préférons le dépenser sur des projets plus locaux.

Où intervient le libre?

Tout le chemin entre le modem de l\’abonné et FDN appartient tantôt à France Télécom, SFR, Nerim, donc dépend d\’eux a priori. Mais ceux-ci n\’ont pas à regarder ce qui y passe, le contrat ne stipule que la fourniture d\’un câble virtuel entre l\’abonné et FDN, qui est alors utilisé librement pour faire passer n\’importe quoi, notamment de l\’IPv4 et de l\’IPv6 sous toutes leurs formes, sans aucune contrainte, que ce soit en termes de différenciation de débits, de fermetures de ports, de possibilités de routages, etc.: c\’est vraiment juste un câble passif, avec lequel on fait ce que l\’on veut entre l\’abonné et FDN. Si ces opérateurs le voulaient vraiment (mais ils n\’auraient pas suffisamment d\’intérêt commercial à cela), ils pourraient dépenser du matériel et du temps pour ajouter un DPI ; on pourrait alors au pire utiliser une option de chiffrement de PPP. À l\’inverse, les fournisseurs d\’accès commerciaux ont tendance à fermer certains ports, refuser de fournir aux abonnés différentes IP (statiques), une délégation rDNS, voire différencier les flux: ralentir volontairement le débit disponible depuis certains sites jugés concurrents.

La \ »neutralité du réseau\ » que vous proposez suppose donc que vous êtes à l\’abri du flicage (HADOPI) et du filtrage (LOPPSI)?

On ne peut pas être à l\’abri des lois: si une loi (et surtout, les décrets correspondant) impose un flicage ou un filtrage, on n\’a guère d\’autre choix que de l\’appliquer, sinon c\’est du pénal. Il peut par contre arriver que l\’on traîne à le faire, et apporter une justification de difficulté technique (qui est réelle !), ou simplement montrer une volonté relative d\’obtempérer. On a vu Free fournir des listings sous forme papier 😉

Comment se traduit cette neutralité chez Aquilenet?

Pour l\’instant, puisque Aquilenet n\’effectue pas elle-même sa collecte et redistribution, c\’est surtout du côté de FDN qu\’elle se traduit, Aquilenet ne fait que retransmettre le service de FDN, qui correspond bien à son éthique: tout est ouvert et indifférencié, tout simplement. Si les décrets passent, FDN devra commencer à essayer de mettre en place flicage et filtrage (FDN a pour principe de respecter la loi). Aquilenet devra alors se poser la question.

Pourquoi adhérer à l\’association?

Pour nous soutenir ! Financièrement bien sûr, mais aussi Aquilenet commence à toquer à la porte des collectivités locales, et a bien plus de poids lorsqu\’elle a des adhérents derrière.

Enfin, quand est-ce que les premières lignes ADSL pourront être ouvertes et quel sera le prix mensuel de l\’abonnement?

Dès maintenant ! Le prix mensuel est aligné sur celui de FDN, 28€/mois en dégroupé partiel SFR, 41€/mois en non-dégroupé SFR, auquel s\’ajoute le coût de la ligne France Télécom. Des tarifs réduits (27€/36€) sont proposés pour les étudiants, RMIstes, chômeurs, etc.

 

Merci à Samuel pour le temps qu\’il a consacré à cette interview. Vous trouverez davantage d\’informations sur http://www.aquilenet.fr. Si vous avez des questions, n\’hésitez pas à les contacter ou à laisser un commentaire sur ce blog. Je ferai suivre la question à Samuel et tâcherai d\’y répondre rapidement.

Téléchargement en torrent de contenu libre

\"FreeAujourd\’hui, j\’aimerai vous faire découvrir un projet très intéressant : Free Torrent.

Free Torrent est un projet de partage de contenu sous licence libre (logiciels, distributions linux, documents, musiques, vidéos, …) utilisant le protocole Bittorrent. Il commence à y avoir pas mal de torrents et ceux-ci sont très souvent de qualité. Certain reprocheront à Free Torrent de proposer des fichiers souvent accessibles plus rapidement en téléchargement direct depuis le net mais il ne faut pas oublier la notion de partage et c\’est là tout l\’intérêt du projet. Bref, je vous invite à regarder si du contenu vous intéresse. N\’hésitez pas à en abuser et à seeder autant que possible! Enfin, si vous avez du contenu libre de droit qui pourrait intéresser la communauté, vous pouvez bien entendu suivre les instructions pour créer un .torrent et le soumettre.

Quelques exemples de fichier que l\’on peut trouver sur Free Torrent :