409 lines
39 KiB
XML
409 lines
39 KiB
XML
|
<?xml version="1.0" encoding="utf-8"?>
|
||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wxcafé</title><link>//wxcafe.net/</link><description></description><atom:link href="//wxcafe.net/feeds/feed.rss.note.xml" rel="self"></atom:link><lastBuildDate>Sat, 22 Aug 2015 02:43:00 +0200</lastBuildDate><item><title>les NUCs et le HDMI-CEC</title><link>//wxcafe.net/posts/nuc-hdmi-cec/</link><description><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></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Sat, 22 Aug 2015 02:43:00 +0200</pubDate><guid>tag:wxcafe.net,2015-08-22:posts/nuc-hdmi-cec/</guid></item><item><title>SSL - STARTTLS</title><link>//wxcafe.net/posts/ssl-starttls/</link><description><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></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Sat, 16 May 2015 02:00:00 +0200</pubDate><guid>tag:wxcafe.net,2015-05-16:posts/ssl-starttls/</guid></item><item><title>Docker et les ebooks sur Twitter</title><link>//wxcafe.net/posts/docker-et-les-ebooks-sur-twitter/</link><description><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></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Sat, 28 Feb 2015 14:11:00 +0100</pubDate><guid>tag:wxcafe.net,2015-02-28:posts/docker-et-les-ebooks-sur-twitter/</guid></item><item><title>SSL ou la sécurité sur l'internet</title><link>//wxcafe.net/posts/SSL-ou-la-securite-sur-internet/</link><description><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></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Fri, 30 May 2014 08:25:00 +0200</pubDate><guid>tag:wxcafe.net,2014-05-30:posts/SSL-ou-la-securite-sur-internet/</guid></item><item><title>Redesign du blog, etc</title><link>//wxcafe.net/posts/redesign-du-blog/</link><description><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></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">wxcafe</dc:creator><pubDate>Wed, 12 Jun 2013 19:14:00 +0200</pubDate><guid>tag:wxcafe.net,2013-06-12:posts/redesign-du-blog/</guid></item><item><title>Update</title><link>//wxcafe.net/posts/update/</link><description><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></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Sat, 05 Jan 2013 18:32:00 +0100</pubDate><guid>tag:wxcafe.net,2013-01-05:posts/update/</guid></item></channel></rss>
|