Wxcafé//wxcafe.net/Sat, 22 Aug 2015 02:43:00 +0200les NUCs et le HDMI-CEC//wxcafe.net/posts/nuc-hdmi-cec/<p>J&rsquo;ai récemment récupéré une télé. Ce post ne se centrant pas sur cette télé, passons rapidement sur ce qui y est lié : ne souhaitant pas &ldquo;profiter&rdquo; du paysage audiovisuel français (ou PAF), et ayant nombre de films et séries acquis tout a fait légalement (hmm hmm) stockés sur mon serveur local, je souhaitais brancher sur ma télévision un système me permettant de regarder ces films et séries, et possiblement quelques sources de vidéos en ligne (Youtube, Netflix, etc&hellip;) simplement.</p> <p>Ayant un <a href="https://www.raspberrypi.org/">Raspberry Pi 1</a> qui trainait, j&rsquo;ai décidé d&rsquo;installer <a href="http://openelec.tv/">OpenELEC</a> dessus et de voir ce que ça donnait. Le résultat n&rsquo;étant pas satisfaisant (a cause des difficultés du RPi a faire fonctionner tout ça), j&rsquo;ai décidé d&rsquo;upgrader le système.</p> <p>J&rsquo;ai donc acquis un <a href="http://www.amazon.fr/gp/product/B00GPJ83EU">NUC D34010WYK</a> (attention, les nouveaux modèles ne fonctionnent pas pour ce qui suit), un <a href="http://www.amazon.fr/dp/B00WU5F8MS/">adaptateur HDMI-CEC</a> pour celui-ci, et un <a href="http://www.amazon.fr/gp/product/B00INTR4ZE">SSD mSATA</a>, en me disant que je pourrais sans trop de problème faire tourner <a href="http://kodi.tv/">Kodi</a> sur un debian, avec en plus Steam pour faire du streaming depuis mon desktop. L&rsquo;autre avantage de tourner sur du Intel, c&rsquo;est de pouvoir mater Netflix (puisque le plugin kodi approprié utilise chrome, et ne fonctionne (a ma connaissance) que sur x86).</p> <p>J&rsquo;ai donc reçu après un certain temps le matériel sus cité, que j&rsquo;ai avidement monté, avant de me rendre compte que le manuel de l&rsquo;adaptateur Pulse-Eight était [PDF]<a href="https://www.pulse-eight.com/Download/Get/30">assez médiocre</a>. J&rsquo;ai donc cherché plusieurs heures, avant de trouver [DE]<a href="http://www.technikaffe.de/anleitung-293-pulse_eight_intel_nuc_hdmi_cec_adapter_im_test">ce post</a> expliquant comment brancher l&rsquo;adaptateur. Je vais donc résumer ici le processus, ce qui devrait rendre la tache a la fois plus simple pour les autres personnes cherchant l&rsquo;information, et pour moi si je dois remonter ce système.</p> <p>Pour faire simple, le NUC présente trois headers séparés : un dual-USB, un dit &ldquo;Front Panel&rdquo;, et un appelé &ldquo;Custom Solution Header&rdquo;. Les trois sont utilisés ici. La première chose a faire est de brancher les fiches grises et rouges sur le Custom Solution Header: le branchement doit être fait ainsi :</p> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%">Custom Solution ┌─┬─┬─┬─┬─┐ │g│ │·│r│·│ ├─┼─┼─┼─┼─┤ │·│·│·│·│·│ └─┴─┴─┴─┴─┘ g ➔ fiche grise r ➔ fiche rouge · ➔ pin inutilisé ➔ espace vide (sans pin) </pre></div> <p>Une fois cela fait, il faut brancher le Front Panel. Heureusement, c&rsquo;est plus facile, puisqu&rsquo;il n&rsquo;y a qu&rsquo;une seule fiche a brancher ici : la orange.</p> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%"> Front Panel ┌─┬─┬─┬─┬─┐ │·│·│·│·│·│ ├─┼─┼─┼─┼─┤ │ │·│o│·│·│ └─┴─┴─┴─┴─┘ o ➔ fiche orange · ➔ pin inutilisé ➔ espace vide (sans pin) </pre></div> <p>Enfin, il faut encore brancher les fiches restantes sur le header dual-USB. Étant donné que ce header contient deux fois les pins nécessaires a un branchement USB, il est possible de brancher les cables de plusieurs façons. </p> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%"> Dual-USB ┌─┬─┬─┬─┬─┐ │b│B│v│n│·│ ├─┼─┼─┼─┼─┤ │·│·│·│·│ │ └─┴─┴─┴─┴─┘ b ➔ fiche bleue B ➔ fiche Blanche v ➔ fiche verte n ➔ fiche noire · ➔ pin inutilisé ➔ espace vide (sans pin) </pre></div> <p>Tous les branchements étant effectués, il faut maintenant remonter la bête (attention a ne pas déranger les branchements avec les antennes Wifi, par exemple), la brancher, et vérifier que tout démarre bien. Il faut aussi changer un paramètre dans le BIOS intel : dans Power➔Secondary Power Settings, il faut que &ldquo;Deep S4/S5&rdquo; soit <em>dés</em>activé. Ceci permettant a la connection HDMI-CEC de démarrer et le NUC.</p> <p>Ne reste plus ensuite qu&rsquo;a installer un système digne de ce nom dessus!</p>WxcafeSat, 22 Aug 2015 02:43:00 +0200tag:wxcafe.net,2015-08-22:posts/nuc-hdmi-cec/SSL - STARTTLS//wxcafe.net/posts/ssl-starttls/<p>Le chiffrement SSL pour les services en ligne est un problème relativement récent, par rapport a l&rsquo;histoire d&rsquo;Internet. Sa mise en place pose problème : les protocoles existants ne s&rsquo;accommodent qu&rsquo;assez mal de recevoir soudainement un flot de données chiffrées, mais développer de nouveaux protocoles est complexe et n&rsquo;apporte rien d&rsquo;intéressant. Pour palier a ce problème, deux solutions sont apparues.</p> <p>Le première consiste à faire écouter les services sur un autre port, dans un tunnel SSL. De cette façon, le service existant écoute normalement, mais il ne répond pas directement aux requêtes. A la place, un tunnel SSL est mis en place, et les requêtes et les réponses passent dans le tunnel (ou elles apparaissent donc chiffrées pour l&rsquo;extérieur). Cela permet de proposer un service chiffré en modifiant de façon minimale le programme, au prix de devoir aussi changer tous les clients, et de devoir les orienter sur un autre port.</p> <p>L&rsquo;autre approche qui a été utilisée est une approche d&rsquo;<em>upgrade</em>. La communication commence en mode non chiffré, puis le client demande l&rsquo;upgrade de la connexion vers le mode chiffré s&rsquo;il le supporte, les deux machines machines font un <em>handshake</em> SSL et la communication continue a travers le tunnel SSL. Le service peut continuer a écouter sur son port habituel, et seuls les clients capables de passer en SSL le feront, ce qui permet de faire la &ldquo;mise a jour&rdquo; en douceur.</p> <p>Il est souvent demandé quelle est la meilleure méthode pour mettre en place un service &ndash; laisser un port pour le SSL et un pour le trafic non chiffré, ou bien un seul, avec <code>STARTTLS</code>, qui <em>upgrade</em> les connexions si nécessaire.<br /> La réponse est que <code>STARTTLS</code> est plus interessant, pour plusieurs raisons. Tout d&rsquo;abord, il permet de n&rsquo;utiliser qu&rsquo;un seul port : ça permet de simplifier la configuration du firewall. En plus de ça, il permet aux clients &ldquo;anciens&rdquo; (ceux qui ne supportent pas SSL, donc ceux qui devraient être changés) de toujours se connecter, même si cela signifie que leurs informations seront transmises en clair. Surtout, il permet d&rsquo;éviter aux utilisateurs d&rsquo;avoir a configurer leurs clients. Si le client supporte le chiffrement, il l&rsquo;activera de lui même s&rsquo;il voit qu&rsquo;il est disponible.<br /> Bref, mettez en place du <code>STARTTLS</code>, et pas du SSL. C&rsquo;est mieux pour la sécurité de tout le monde.</p>WxcafeSat, 16 May 2015 02:00:00 +0200tag:wxcafe.net,2015-05-16:posts/ssl-starttls/Docker et les ebooks sur Twitter//wxcafe.net/posts/docker-et-les-ebooks-sur-twitter/<p>Vous avez peut être déjà entendu parler de <a href="https://www.docker.com/">Docker</a>. Si ce n&rsquo;est pas le cas, voila les bases : Docker est un système de containers. Les containers sont une forme particulière de virtualisation, ou le kernel n&rsquo;est pas virtualisé, mais ou les processus du système hôte sont séparés de ceux des systèmes invités. Cela est possible depuis longtemps sous FreeBSD avec les <a href="https://www.freebsd.org/doc/en/books/handbook/jails.html">Jails</a>, mais n&rsquo;est devenu possible sous linux que récemment grâce aux <a href="https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt">cgroups</a>, qui permettent justement de séparer des groupes de processus. Le principe de Docker est donc d&rsquo;avoir une machine hôte sur laquelle s&rsquo;exécutent plusieurs conteneurs Dockers, chacun séparé des autres et de l&rsquo;hôte, mais utilisant tous le même kernel. Cela pose quelques questions en terme de sécurités, puisque la séparation est bien plus fine qu&rsquo;avec de la virtualisation classique. En effet, ici, en trouvant un exploit kernel, un attaquant aurait potentiellement la capacité de remonter jusqu&rsquo;à l&rsquo;hôte, puisqu&rsquo;il n&rsquo;est pas vraiment séparé des invités. </p> <p>Quoi qu&rsquo;il en soit, Docker permet donc de virtualiser a moindre coût des systèmes GNU/Linux. &ldquo;Mais pourquoi utiliser Docker, dans ce cas&rdquo;, vous demandez-vous peut être, &ldquo;puisque Xen peut faire la même chose, et plus (notamment, Xen est capable de virtualiser autre chose que GNU/Linux)?&rdquo;. Et bien c&rsquo;est très simple : Docker apporte la simplicité de déploiement d&rsquo;applications. Les conteneurs Dockers peuvent être décrit en un fichier, nommé Dockerfile, qui permet de répliquer un conteneur en quelques minutes sur un autre hôte, en une commande. Le <a href="https://hub.docker.com">Docker Hub</a> permet aussi de récupérer rapidement et facilement un grand nombre d&rsquo;images déjà configurées. </p> <p>Maintenant que nous avons expliqué rapidement ce qu&rsquo;était Docker, voyons le rapport avec les ebooks et Twitter.</p> <p>Les comptes dits &ldquo;ebooks&rdquo; (le nom vient a l&rsquo;origine de <a href="https://twitter.com/horse_ebooks">horse_ebooks</a>, voir <a href="https://en.wikipedia.org/wiki/Horse_ebooks">ici</a> pourquoi) sont des bots twitter utilisant des <a href="https://en.wikipedia.org/wiki/Markov_chain">Chaines de Markov</a>, avec les tweets d&rsquo;un utilisateur &ldquo;source&rdquo; comme corpus, pour produire des tweets ressemblant a ceux de l&rsquo;utilisateur source. Nous allons voir maintenant comment en installer un.</p> <p>C&rsquo;est, comme disent certaines personnes, &ldquo;fun&rdquo;.</p> <p>Il existe de nombreuses librairies écrites pour créer ce genre de bots, cependant dans ce cas nous nous concentrerons sur <a href="https://github.com/mispy/twitter_ebooks">celle-ci</a>, qui est une lib ruby créée par <a href="https://twitter.com/m1sp">@m1sp</a>, qui gère pour nous a la fois l&rsquo;API twitter et la génération des messages.</p> <p>Cependant, cela n&rsquo;explique toujours pas le lien avec Docker. Ce lien est très simple : nous utilisons un container pour faire tourner les bots. Depuis la version 3, la gem twitter_ebooks permet de faire tourner plusieurs bots dans une seule instance. Cependant, il est toujours plus sûr d&rsquo;isoler les bots, et les containers dockers permettent de les déployer sur n&rsquo;importe quelle machine (celleux qui ont déjà tenté de mettre en place une application basée sur ruby sauront le problème que cela pose habituellement). Pour ce faire, j&rsquo;ai créé <a href="https://github.com/wxcafe/ebooks_example">un repo github</a> qui contient toutes les pièces nécessaires pour mettre cela en place : le bot en lui même, les deux Dockerfiles, etc.</p> <p>Le fonctionnement du bot est simple : après avoir installé la gem twitter_ebooks, vous archivez le corpus de l&rsquo;utilisateur source avec <code>ebooks archive &lt;username&gt; &lt;filename&gt;</code> (c&rsquo;est du json) , puis vous convertissez le json en fichier utilisable par le bot : <code>ebooks consume &lt;filename&gt;</code>. Cela fait, démarrer le bot revient a lancer le container : <code>docker run -d &lt;container name&gt;</code> Pour plus d&rsquo;informations, allez voir <a href="https://docs.docker.com/articles/basics/">la documentation Docker</a></p> <p>Bien entendu, dans l&rsquo;idéal il faudrait mettre a jour les corpus de chaque utilisateur régulièrement. Cela est très simple a mettre en place avec un simple script cron : </p> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%">00 00 * * * /usr/local/bin/ebooks archive username /usr/local/ebooks/main/corpus/username.json &gt;&gt; /var/log/ebooks/update.log 2&gt;&amp;1 00 05 * * * cd /usr/local/ebooks/main/ &amp;&amp; /usr/local/bin/ebooks consume corpus/username.json &gt;&gt; /var/log/ebooks/update.log 2&gt;&amp;1 00 10 * * * docker rm -f bots &gt;/dev/null 2&gt;&amp;1 00 15 * * * docker rmi bots &gt; /dev/null 2&gt;&amp;1 00 20 * * * cd /usr/local/ebooks/main/ &amp;&amp; docker build --rm -t bots . &gt;&gt; /var/log/ebooks/build.log 2&gt;&amp;1 00 25 * * * docker run -d --name bots bots &gt;&gt; /var/log/ebooks/run.log 2&gt;&amp;1 </pre></div> <p>Les 5 minutes entre chaque commande sont laissées pour empécher que deux commandes ne s&rsquo;executent en même temps.</p> <p>Et voila, vous avez un container Docker qui fait tourner une application en ruby toute sale, et votre système hôte reste propre. Bien sûr, ce n&rsquo;est qu&rsquo;un exemple des possibilités de Docker : par exemple, on peut aussi faire tourner <a href="https://blog.jessfraz.com/posts/docker-containers-on-the-desktop.html">des applications &ldquo;usuelles&rdquo; dedans</a>, puisque l&rsquo;overhead de Docker est minimal, et beaucoup d&rsquo;autres applications existent.</p>WxcafeSat, 28 Feb 2015 14:11:00 +0100tag:wxcafe.net,2015-02-28:posts/docker-et-les-ebooks-sur-twitter/SSL ou la sécurité sur l'internet//wxcafe.net/posts/SSL-ou-la-securite-sur-internet/<p><em>Disclaimer: Ce billet est écrit après le visionnage de la conférence de Moxie Marlinspike suivante: <a href="https://www.youtube.com/watch?v=ibF36Yyeehw">More Tricks for Defeating SSL</a>, présentée a la DefCon 17 (en 2011), et la lecture du billet suivant: <a href="http://www.thoughtcrime.org/blog/lavabit-critique/">A Critique of Lavabit</a>, ce qui peut avoir l&rsquo;effet de rendre légèrement parano. Si vous considérez que c&rsquo;est le cas ici, veuillez ne pas tenir compte de ce billet (et vous pouvez dès a présent dire coucou aux différentes personnes qui écoutent votre connection)</em></p> <p>Si vous venez ici souvent (vous devriez), et que vous utilisez SSL pour vous connecter a ce site (vous devriez, vraiment, dans ce cas), vous avez peut être remarqué quelque chose récemment : il se trouve que le certificat qui permet de desservir ce site a changé.</p> <p>Cela fait suite aux évènements évoqués dans le <em>Disclaimer</em>, mais aussi a des doigts sortis d&rsquo;un endroit particulier du corps de l&rsquo;admin/auteur de ce &ldquo;blog&rdquo;, qui a pris <strong>enfin</strong> les 5 minutes nécessaires a la compréhension superficielle du fonctionnement de SSL, et les 10 nécessaires a la mise en place d&rsquo;un système fonctionnel utilisant cette compréhension récemment acquise.</p> <p>Bref, le certificat a changé. Mais de quelle façon, vous demandez vous peut être (ou pas, mais bon, je vais expliquer de toute façon). Et bien c&rsquo;est très simple : il existait auparavant un certificat pour <code>wxcafe.net</code>, un pour <code>paste.wxcafe.net</code>, un pour <code>mail.wxcafe.net</code>, etc&hellip; Bref, un certificat différent pour chaque sous-domaine.</p> <p>Il s&rsquo;avère que c&rsquo;est a la fois très peu pratique a utiliser (les utilisateurs doivent ajouter chaque certificat a leur navigateur séparément, chaque changement de sous-domaine conduit a un message d&rsquo;erreur, etc) et pas plus sécurisé que d&rsquo;avoir un seul certificat wildcard. J&rsquo;ai donc généré un certificat pour <code>*.wxcafe.net</code> hier, et il sera dorénavant utilisé pour tous les sous-domaine de <code>wxcafe.net</code>; et un certificat pour <code>wxcafe.net</code>, qui ne matche pas <code>*.wxcafe.net</code>, et qui sera donc utilisé&hellip; bah pour <code>wxcafe.net</code>.</p> <p>Il serait préférable de faire des redirections automatiques des adresses http vers les adresses https, cependant, étant donné que le certificat est self-signed, il me semble préférable que l&rsquo;arrivée sur le site ne commence pas par une page firefox disant &ldquo;Something&rsquo;s Wrong!&rdquo;, et ces redirections ne seront donc pas mises en place.</p> <p>De plus, après la lecture de l&rsquo;article de blog sur Lavabit dont le lien est plus haut, il semble intéressant (et assez important) de faire en sorte que le serveur utilise en priorité (et si possible, uniquement) des ciphers supportant PFS, soit EDH et EECDH (Ephemeral Diffie-Helmann et la version Elliptic Curves de ce même algorithme). Cela permet de faire en sorte que toutes les communications avec ce serveur soient future-proof, c&rsquo;est a dire que, même si quelqu&rsquo;un récupérait la clé privée, elle ne serait pas utile pour déchiffrer les communications passées.</p> <p>Bon, maintenant que les explications basiques sont faites, voyons l&rsquo;implémentation : <br /> Pour générer la clé, tout d&rsquo;abord, il convient d&rsquo;utiliser les commandes suivantes: </p> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%">sudo openssl genrsa -out example.key 4096 # nous utilisons ici une clé de <span style="color: #ae81ff">4096</span> bits, la taille est laissée a votre appréciation sudo openssl req -new -key example.key -out example.csr # OpenSSL va ici vous demander de nombreuses informations, <span style="color: #e6db74">&quot;Common Name&quot;</span> devant contenir le FQDN sudo openssl X509 -req -days 1095 -in example.csr -signkey example.key -out example.crt # enfin, nous générons la clé, d<span style="color: #960050; background-color: #1e0010">&#39;</span>une durée de vie de <span style="color: #ae81ff">3</span> ans </pre></div> <p>Bien entendu, si vous voulez utiliser une clé wildcard, il vous faut préciser <code>*.example.com</code> comme common name. Une fois la clé générée, il faut dire aux différents services de l&rsquo;utiliser, et de n&rsquo;utiliser que des ciphers PFS. La méthode dépend donc du service. Je vais lister ici les methodes pour quelques services que j&rsquo;utilise :</p> <h3>apache :</h3> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span style="color: #75715e"># /etc/apache2/mods_enabled/ssl.conf</span> <span style="color: #75715e"># [...]</span> <span style="color: #f8f8f2">SSLProtocol</span> <span style="color: #66d9ef">all</span> -SSLv2 -SSLv3 <span style="color: #f8f8f2">SSLHonorCipherOrder</span> <span style="color: #66d9ef">on</span> <span style="color: #f8f8f2">SSLCipherSuite</span> <span style="color: #960050; background-color: #1e0010">&quot;</span>EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \ EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \ EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS<span style="color: #960050; background-color: #1e0010">&quot;</span> <span style="color: #75715e"># [...]</span> <span style="color: #75715e"># /etc/apache2/sites-enabled/default-ssl</span> <span style="color: #75715e"># [...]</span> <span style="color: #f8f8f2">SSLEngine</span> <span style="color: #66d9ef">on</span> <span style="color: #f8f8f2">SSLCertificateFile</span> <span style="color: #e6db74">/etc/certs/example.com.crt</span> <span style="color: #f8f8f2">SSLCertificateKeyFile</span> <span style="color: #e6db74">/etc/certs/example.com.key</span> <span style="color: #75715e"># [...]</span> </pre></div> <h3>nginx :</h3> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span style="color: #75715e"># /etc/nginx/nginx.conf </span> <span style="color: #75715e"># [...]</span> <span style="color: #66d9ef">ssl_protocols</span> <span style="color: #e6db74">TLSv1</span> <span style="color: #e6db74">TLSv1.1</span> <span style="color: #e6db74">TLSv1.2</span><span style="color: #f8f8f2">;</span> <span style="color: #66d9ef">ssl_prefer_server_ciphers</span> <span style="color: #66d9ef">on</span><span style="color: #f8f8f2">;</span> <span style="color: #66d9ef">ssl_ciphers</span> <span style="color: #e6db74">&quot;EECDH+ECDSA+AESGCM</span> <span style="color: #e6db74">EECDH+aRSA+AESGCM</span> <span style="color: #e6db74">EECDH+ECDSA+SHA384</span> <span style="color: #e6db74">\</span> <span style="color: #e6db74">EECDH+ECDSA+SHA256</span> <span style="color: #e6db74">EECDH+aRSA+SHA384</span> <span style="color: #e6db74">EECDH+aRSA+SHA256</span> <span style="color: #e6db74">EECDH+aRSA+RC4</span> <span style="color: #e6db74">\</span> <span style="color: #e6db74">EECDH</span> <span style="color: #e6db74">EDH+aRSA</span> <span style="color: #e6db74">RC4</span> <span style="color: #e6db74">!aNULL</span> <span style="color: #e6db74">!eNULL</span> <span style="color: #e6db74">!LOW</span> <span style="color: #e6db74">!3DES</span> <span style="color: #e6db74">!MD5</span> <span style="color: #e6db74">!EXP</span> <span style="color: #e6db74">!PSK</span> <span style="color: #e6db74">!SRP</span> <span style="color: #e6db74">!DSS&quot;</span><span style="color: #f8f8f2">;</span> <span style="color: #75715e"># [...]</span> <span style="color: #75715e"># /etc/nginx/sites-enabled/default-ssl</span> <span style="color: #75715e"># [...]</span> <span style="color: #66d9ef">ssl</span> <span style="color: #66d9ef">on</span><span style="color: #f8f8f2">;</span> <span style="color: #66d9ef">ssl_certificate</span> <span style="color: #e6db74">/etc/certs/example.com.crt</span> <span style="color: #e6db74">ssl_certificate_key</span> <span style="color: #e6db74">/etc/certs/example.com.key</span> <span style="color: #75715e"># [...]</span> </pre></div> <h3>prosody (jabber) :</h3> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span style="color: #f92672">#</span> <span style="color: #f8f8f2">tout</span> <span style="color: #f8f8f2">d</span><span style="color: #e6db74">&#39;abord, lancez la commande suivante :</span> <span style="color: #f8f8f2">sudo</span> <span style="color: #f8f8f2">openssl</span> <span style="color: #f8f8f2">dhparam</span> <span style="color: #f92672">-</span><span style="color: #f8f8f2">out</span> <span style="color: #f92672">/</span><span style="color: #f8f8f2">etc</span><span style="color: #f92672">/</span><span style="color: #f8f8f2">prosody</span><span style="color: #f92672">/</span><span style="color: #f8f8f2">certs</span><span style="color: #f92672">/</span><span style="color: #f8f8f2">dh</span><span style="color: #f92672">-</span><span style="color: #ae81ff">2048.</span><span style="color: #f8f8f2">pem</span> <span style="color: #ae81ff">2048</span> <span style="color: #f92672">#</span> <span style="color: #f8f8f2">ensuite,</span> <span style="color: #f8f8f2">pour</span> <span style="color: #f8f8f2">chaque</span> <span style="color: #f8f8f2">VirtualHost</span> <span style="color: #f8f8f2">dans</span> <span style="color: #f92672">/</span><span style="color: #f8f8f2">etc</span><span style="color: #f92672">/</span><span style="color: #f8f8f2">prosody</span><span style="color: #f92672">/</span><span style="color: #f8f8f2">prosody.conf</span> <span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">ssl</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">{</span> <span style="color: #f8f8f2">dhparam</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;/etc/prosody/certs/dh-2048.pem&quot;</span><span style="color: #f8f8f2">;</span> <span style="color: #f8f8f2">key</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;/etc/certs/example.com.key&quot;</span><span style="color: #f8f8f2">;</span> <span style="color: #f8f8f2">certificate</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;/etc/certs/example.com.crt&quot;</span><span style="color: #f8f8f2">;</span> <span style="color: #f8f8f2">}</span> <span style="color: #f92672">#</span> <span style="color: #f8f8f2">la</span> <span style="color: #f8f8f2">cipher</span> <span style="color: #f8f8f2">suite</span> <span style="color: #f8f8f2">de</span> <span style="color: #f8f8f2">prosody</span> <span style="color: #f8f8f2">utilise</span> <span style="color: #f8f8f2">par</span> <span style="color: #f8f8f2">d</span><span style="color: #960050; background-color: #1e0010">é</span><span style="color: #f8f8f2">faut</span> <span style="color: #f8f8f2">EDH</span> <span style="color: #f8f8f2">et</span> <span style="color: #f8f8f2">EECDH</span> </pre></div> <h3>postfix (email) :</h3> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span style="color: #75715e"># /etc/postfix/main.cf</span> <span style="color: #75715e"># [...]</span> <span style="color: #f8f8f2">smtpd_tls_cert_file</span> <span style="color: #f92672">=</span> /etc/certs/example.com.crt <span style="color: #f8f8f2">smtpd_tls_key_file</span> <span style="color: #f92672">=</span> /etc/certs/example.com.key <span style="color: #f8f8f2">tls_preempt_cipherlist</span> <span style="color: #f92672">=</span> yes <span style="color: #f8f8f2">smtpd_tls_eecdh_grade</span> <span style="color: #f92672">=</span> strong <span style="color: #f8f8f2">smtdp_tls_mandatory_ciphers</span> <span style="color: #f92672">=</span> high <span style="color: #f8f8f2">smtpd_tls_mandatory_exclude_ciphers</span> <span style="color: #f92672">=</span> aNULL, eNULL, MD5, LOW, 3DES, EXP, PSK, SRP, DSS <span style="color: #f8f8f2">smtpd_tls_security_level</span> <span style="color: #f92672">=</span> encrypt <span style="color: #f8f8f2">smtpd_tls_mandatory_protocols</span> <span style="color: #f92672">=</span> !SSLv2, !SSLv3 <span style="color: #f8f8f2">smtpd_use_tls</span> <span style="color: #f92672">=</span> yes <span style="color: #75715e"># [...]</span> </pre></div> <h3>dovecot (imap) :</h3> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span style="color: #75715e"># /etc/dovecot/dovecot.conf </span> <span style="color: #75715e"># [...]</span> <span style="color: #f8f8f2">ssl_cert</span> <span style="color: #f92672">=</span> &lt;/etc/certs/example.com.crt <span style="color: #f8f8f2">ssl_key</span> <span style="color: #f92672">=</span> &lt;/etc/certs/example.com.key <span style="color: #f8f8f2">ssl_cipher_list</span> <span style="color: #f92672">=</span> HIGH+kEDH:HIGH+kEECDH:HIGH:!PSK:!SRP:!3DES:!aNULL </pre></div> <p>Voila. Pour d&rsquo;autres protocoles/services, je vous invite a RTFM^W vous reporter au manuel approprié.</p> <p>Cela étant dit, je conseille a tout le monde d&rsquo;aller voir la conférence dans le disclaimer, et tant qu&rsquo;a faire la conférence du même hacker <a href="https://www.youtube.com/watch?v=8N4sb-SEpcg">SSL and the future of Authenticity</a> qui parle de son implémentation d&rsquo;une technologie &ldquo;remplaçant&rdquo; le système de CAs qui existe actuellement.</p>WxcafeFri, 30 May 2014 08:25:00 +0200tag:wxcafe.net,2014-05-30:posts/SSL-ou-la-securite-sur-internet/Redesign du blog, etc//wxcafe.net/posts/redesign-du-blog/<p>Comme vous avez pu le remarquer, ce blog a &ldquo;un peu&rdquo; changé récemment.</p> <p>Du coup, expliquons. J&rsquo;ai récemment monté <a href="http://serverporn.fr">serverporn</a>, et ai par la même occasion découvert <a href="http://getpelican.com">pelican</a>. J&rsquo;ai tout de suite accroché a ce générateur de site statique en python, du fait de son efficacité, de sa facilité d&rsquo;utilisation et de sa grande customisation. En gros, pelican est un logiciel qui prend des fichiers markdown ou reStructuredText, les passe a la moulinette d&rsquo;un &ldquo;thème&rdquo; constitué de templates pour les fichiers html et l&rsquo;organisation du projet et d&rsquo;une partie &ldquo;statique&rdquo; contenant le css, et les autres fichiers nécessaires au projet, et en fait des pages html. </p> <p>Globalement, un thème est constitué ainsi :</p> <div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span style="color: #f8f8f2">th</span><span style="color: #960050; background-color: #1e0010">è</span><span style="color: #f8f8f2">me</span> <span style="color: #960050; background-color: #1e0010">├──</span> <span style="color: #66d9ef">static</span> <span style="color: #960050; background-color: #1e0010">│</span> <span style="color: #960050; background-color: #1e0010">├─</span> <span style="color: #f8f8f2">css</span> <span style="color: #960050; background-color: #1e0010">│</span> <span style="color: #960050; background-color: #1e0010">│</span> <span style="color: #960050; background-color: #1e0010">└─</span> <span style="color: #f8f8f2">[css</span> <span style="color: #f8f8f2">files]</span> <span style="color: #960050; background-color: #1e0010">│</span> <span style="color: #960050; background-color: #1e0010">├─</span> <span style="color: #f8f8f2">img</span> <span style="color: #960050; background-color: #1e0010">│</span> <span style="color: #960050; background-color: #1e0010">│</span> <span style="color: #960050; background-color: #1e0010">└─</span> <span style="color: #f8f8f2">[image</span> <span style="color: #f8f8f2">files]</span> <span style="color: #960050; background-color: #1e0010">│</span> <span style="color: #960050; background-color: #1e0010">└─</span> <span style="color: #f8f8f2">js</span> <span style="color: #960050; background-color: #1e0010">│</span> <span style="color: #960050; background-color: #1e0010">└─</span> <span style="color: #f8f8f2">[javascript</span> <span style="color: #f8f8f2">files]</span> <span style="color: #960050; background-color: #1e0010">└──</span> <span style="color: #f8f8f2">template</span> <span style="color: #960050; background-color: #1e0010">├─</span> <span style="color: #f8f8f2">base.html</span> <span style="color: #960050; background-color: #1e0010">├─</span> <span style="color: #f8f8f2">index.html</span> <span style="color: #960050; background-color: #1e0010">├─</span> <span style="color: #f8f8f2">page.html</span> <span style="color: #960050; background-color: #1e0010">├─</span> <span style="color: #f8f8f2">[...]</span> <span style="color: #960050; background-color: #1e0010">└─</span> <span style="color: #f8f8f2">article.html</span> </pre></div> <p>Sachant que les fichiers .html sont en réalité des fichiers suivant la syntaxe django, et utilisent des variables particulières telles <code>{{ article.content }}</code>, par exemple. La syntaxe complète est très bien documentée dans la <a href="http://docs.getpelican.com/en/3.2/themes.html#templates-and-variables">doc</a> de pelican.</p> <p>L&rsquo;un des grands avantages de pelican est aussi la facilité qu&rsquo;il offre quand a la mise a jour du blog.<br /> En effet, il offre un système de Makefiles permettant, grâce a de nombreuses cibles de compilation, de régénérer le site entier, de ne générer que les fichiers modifiés depuis la dernière génération, de générer uniquement les fichiers n&rsquo;existant pas la dernière fois, etc&hellip; La gestion du projet en devient donc très simple, puisque après avoir écrit un article, il suffit de faire un <code>make html</code> pour mettre a jour le blog.</p> <p>De plus, le système de wordpress commençait a ne plus me convenir, du fait du manque de customisation, du fait que ça soit du PHP (beurk), etc. La, avec pelican, je contrôle bien plus ce qui est mis sur le serveur (puisque c&rsquo;est moi qui ait modifié les templates et le css), c&rsquo;est lisible (puisque c&rsquo;est du python, par opposition au PHP&hellip;), et c&rsquo;est plus &ldquo;efficace&rdquo;. Le markdown est très pratique, je peux utiliser mon éditeur de texte de prédilection pour faire les articles, je n&rsquo;ai pas besoin d&rsquo;un accès continu au net, bref, c&rsquo;est plus efficace.</p> <p>En ce qui concerne les points négatifs : </p> <ul> <li> <p>Perte des commentaires: Je vous propose de vous référer a l&rsquo;article de Gordontesos <a href="http://gordon.re/hacktivisme/la-necessite-des-commentaires.html">ici</a> quand a mon avis sur ce sujet.</p> </li> <li> <p>Perte du bouton flattr: Il va bientôt être remis, c&rsquo;est juste un manque de temps de ma part, mais vu que toutes les pages passent par les mêmes templates, c&rsquo;est assez facile a faire.</p> </li> <li> <p>Perte du spam: Pourquoi c&rsquo;est dans les points négatifs, ca?</p> </li> <li> <p>Temps d&rsquo;adaptation et d&rsquo;appréhension du système: Oui, pendant encore un certain temps, il y aura des glitchs plus ou moins réguliers sur le blog, c&rsquo;est parce que j&rsquo;apprend a me servir de ce système et que j&rsquo;apprend du css et du html. Ca arrive, ca passera, mais dans tous les cas ca me permet d&rsquo;apprendre plein de choses, donc je mets plutôt ca dans la catëgorie positive.</p> </li> </ul> <p>Voila, c&rsquo;est mon retour d&rsquo;expérience sur pelican. A plus. </p>wxcafeWed, 12 Jun 2013 19:14:00 +0200tag:wxcafe.net,2013-06-12:posts/redesign-du-blog/Update//wxcafe.net/posts/update/<p>Juste une petite note pour annoncer le prochain article, consacré a la fabrication d&rsquo;une PirateBox basée sur un Raspberry Pi. Voila, a bientôt sur le blog!</p>WxcafeSat, 05 Jan 2013 18:32:00 +0100tag:wxcafe.net,2013-01-05:posts/update/