567 lines
32 KiB
HTML
567 lines
32 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html lang="en">
|
|||
|
<head>
|
|||
|
<meta charset="utf-8">
|
|||
|
<title>Wxcafé - Notes</title>
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|||
|
<meta name="author" content="wxcafé">
|
|||
|
<link rel="icon" type="image/png" href="file:///home/wxcafe/code/blog-source/output/theme/img/favicon.ico">
|
|||
|
<!-- Le styles -->
|
|||
|
<link rel="stylesheet" href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap.css" type="text/css" />
|
|||
|
<link href='http://fonts.googleapis.com/css?family=Oswald&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
|
|||
|
<script type="text/javascript">
|
|||
|
/* <![CDATA[ */
|
|||
|
(function() {
|
|||
|
var s = document.createElement('script');
|
|||
|
var t = document.getElementsByTagName('script')[0];
|
|||
|
|
|||
|
s.type = 'text/javascript';
|
|||
|
s.async = true;
|
|||
|
s.src = '//api.flattr.com/js/0.6/load.js?'+
|
|||
|
'mode=auto&uid=wxcafe&button=compact&popout=0';
|
|||
|
t.parentNode.insertBefore(s, t);
|
|||
|
})();
|
|||
|
/* ]]> */
|
|||
|
</script> <!-- flattr button loader -->
|
|||
|
<style type="text/css">
|
|||
|
body {
|
|||
|
padding-top: 60px;
|
|||
|
padding-bottom: 40px;
|
|||
|
}
|
|||
|
.sidebar-nav {
|
|||
|
padding: 9px 0;
|
|||
|
}
|
|||
|
.tag-1 {
|
|||
|
font-size: 13pt;
|
|||
|
}
|
|||
|
.tag-2 {
|
|||
|
font-size: 10pt;
|
|||
|
}
|
|||
|
.tag-2 {
|
|||
|
font-size: 8pt;
|
|||
|
}
|
|||
|
.tag-4 {
|
|||
|
font-size: 6pt;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/bootstrap-responsive.css" rel="stylesheet">
|
|||
|
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/font-awesome.css" rel="stylesheet">
|
|||
|
<link href="file:///home/wxcafe/code/blog-source/output/theme/css/pygments.css" rel="stylesheet">
|
|||
|
<!-- Le fav and touch icons -->
|
|||
|
<link rel="shortcut icon" href="file:///home/wxcafe/code/blog-source/output/theme/images/favicon.ico">
|
|||
|
|
|||
|
<link href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" type="application/atom+xml" rel="alternate" title="Wxcafé RSS Feed" />
|
|||
|
|
|||
|
</head>
|
|||
|
|
|||
|
<body>
|
|||
|
|
|||
|
<div class="navbar navbar-fixed-top">
|
|||
|
<div class="navbar-inner">
|
|||
|
<div class="container-fluid">
|
|||
|
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
|||
|
<span class="icon-bar"></span>
|
|||
|
<span class="icon-bar"></span>
|
|||
|
<span class="icon-bar"></span>
|
|||
|
</a>
|
|||
|
<a class="brand" href="file:///home/wxcafe/code/blog-source/output/index.html">Wxcafé </a>
|
|||
|
<div class="nav-collapse">
|
|||
|
<ul class="nav">
|
|||
|
<li><a href="file:///home/wxcafe/code/blog-source/output/archives.html"><i class="icon-th-list"></i> Archives</a></li>
|
|||
|
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
|
|||
|
<li class="divider-vertical"></li>
|
|||
|
<ul class="nav pull-right">
|
|||
|
</ul>
|
|||
|
</ul>
|
|||
|
</div><!--/.nav-collapse -->
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="container-fluid">
|
|||
|
<div class="row">
|
|||
|
<div class="span9" id="content">
|
|||
|
<div class="article">
|
|||
|
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/SSL-ou-la-securite-sur-internet/">SSL ou la sécurité sur l'internet</a></h1>
|
|||
|
<div class="well small"><footer class="post-info">
|
|||
|
<span class="label">Date</span>
|
|||
|
<span class="published" title="2014-05-30T08:25:00+02:00">
|
|||
|
<i class="icon-calendar"></i> Fri 30 May 2014
|
|||
|
</span>
|
|||
|
<br />
|
|||
|
<span class="label">By</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
|
|||
|
<br />
|
|||
|
<span class="label">Category</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
|
|||
|
<br />
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</footer><!-- /.post-info --></div>
|
|||
|
<div class="summary"><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'effet de rendre légèrement parano. Si vous considérez que
|
|||
|
c'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'un endroit particulier du corps de l'admin/auteur de ce "blog",
|
|||
|
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'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'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... Bref, un certificat
|
|||
|
différent pour chaque sous-domaine.</p>
|
|||
|
<p>Il s'avère que c'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'erreur, etc) et pas plus
|
|||
|
sécurisé que d'avoir un seul certificat wildcard. J'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é... 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'arrivée sur le site ne commence pas
|
|||
|
par une page firefox disant "Something's Wrong!", et ces redirections ne seront
|
|||
|
donc pas mises en place.</p>
|
|||
|
<p>De plus, après la lecture de l'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'est a dire que, même si
|
|||
|
quelqu'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'implémentation : <br />
|
|||
|
Pour générer la clé, tout d'abord, il convient d'utiliser les commandes
|
|||
|
suivantes: </p>
|
|||
|
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">openssl</span> <span class="n">genrsa</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="mi">4096</span>
|
|||
|
<span class="cp"># nous utilisons ici une clé de 4096 bits, la taille est laissée a votre appréciation</span>
|
|||
|
<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">req</span> <span class="o">-</span><span class="n">new</span> <span class="o">-</span><span class="n">key</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">csr</span>
|
|||
|
<span class="cp"># OpenSSL va ici vous demander de nombreuses informations, "Common Name" devant contenir le FQDN</span>
|
|||
|
<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">X509</span> <span class="o">-</span><span class="n">req</span> <span class="o">-</span><span class="n">days</span> <span class="mi">1095</span> <span class="o">-</span><span class="n">in</span> <span class="n">example</span><span class="p">.</span><span class="n">csr</span> <span class="o">-</span><span class="n">signkey</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">crt</span>
|
|||
|
<span class="cp"># enfin, nous générons la clé, d'une durée de vie de 3 ans</span>
|
|||
|
</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'utiliser, et
|
|||
|
de n'utiliser que des ciphers PFS. La méthode dépend donc du service.
|
|||
|
Je vais lister ici les methodes pour quelques services que j'utilise :</p>
|
|||
|
<h3>apache :</h3>
|
|||
|
<div class="highlight"><pre><span class="cp"># /etc/apache2/mods_enabled/ssl.conf</span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
<span class="n">SSLProtocol</span> <span class="n">all</span> <span class="o">-</span><span class="n">SSLv2</span> <span class="o">-</span><span class="n">SSLv3</span>
|
|||
|
<span class="n">SSLHonorCipherOrder</span> <span class="n">on</span>
|
|||
|
<span class="n">SSLCipherSuite</span> <span class="s">"EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \</span>
|
|||
|
<span class="s"> EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \</span>
|
|||
|
<span class="s"> EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"</span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
<span class="cp"># /etc/apache2/sites-enabled/default-ssl</span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
<span class="n">SSLEngine</span> <span class="n">on</span>
|
|||
|
<span class="n">SSLCertificateFile</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span>
|
|||
|
<span class="n">SSLCertificateKeyFile</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<h3>nginx :</h3>
|
|||
|
<div class="highlight"><pre><span class="cp"># /etc/nginx/nginx.conf </span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
<span class="n">ssl_protocols</span> <span class="n">TLSv1</span> <span class="n">TLSv1</span><span class="mf">.1</span> <span class="n">TLSv1</span><span class="mf">.2</span><span class="p">;</span>
|
|||
|
<span class="n">ssl_prefer_server_ciphers</span> <span class="n">on</span><span class="p">;</span>
|
|||
|
<span class="n">ssl_ciphers</span> <span class="s">"EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \</span>
|
|||
|
<span class="s"> EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \</span>
|
|||
|
<span class="s"> EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"</span><span class="p">;</span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
<span class="cp"># /etc/nginx/sites-enabled/default-ssl</span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
<span class="n">ssl</span> <span class="n">on</span><span class="p">;</span>
|
|||
|
<span class="n">ssl_certificate</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span>
|
|||
|
<span class="n">ssl_certificate_key</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<h3>prosody (jabber) :</h3>
|
|||
|
<div class="highlight"><pre><span class="cp"># tout d'abord, lancez la commande suivante :</span>
|
|||
|
<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">dhparam</span> <span class="o">-</span><span class="n">out</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">prosody</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">dh</span><span class="o">-</span><span class="mf">2048.</span><span class="n">pem</span> <span class="mi">2048</span>
|
|||
|
<span class="cp"># ensuite, pour chaque VirtualHost dans /etc/prosody/prosody.conf :</span>
|
|||
|
<span class="n">ssl</span> <span class="o">=</span> <span class="p">{</span>
|
|||
|
<span class="n">dhparam</span> <span class="o">=</span> <span class="s">"/etc/prosody/certs/dh-2048.pem"</span><span class="p">;</span>
|
|||
|
<span class="n">key</span> <span class="o">=</span> <span class="s">"/etc/certs/example.com.key"</span><span class="p">;</span>
|
|||
|
<span class="n">certificate</span> <span class="o">=</span> <span class="s">"/etc/certs/example.com.crt"</span><span class="p">;</span>
|
|||
|
<span class="p">}</span>
|
|||
|
<span class="cp"># la cipher suite de prosody utilise par défaut EDH et EECDH</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<h3>postfix (email) :</h3>
|
|||
|
<div class="highlight"><pre><span class="cp"># /etc/postfix/main.cf</span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
<span class="n">smtpd_tls_cert_file</span> <span class="o">=</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span>
|
|||
|
<span class="n">smtpd_tls_key_file</span> <span class="o">=</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span>
|
|||
|
<span class="n">tls_preempt_cipherlist</span> <span class="o">=</span> <span class="n">yes</span>
|
|||
|
<span class="n">smtpd_tls_eecdh_grade</span> <span class="o">=</span> <span class="n">strong</span>
|
|||
|
<span class="n">smtdp_tls_mandatory_ciphers</span> <span class="o">=</span> <span class="n">high</span>
|
|||
|
<span class="n">smtpd_tls_mandatory_exclude_ciphers</span> <span class="o">=</span> <span class="n">aNULL</span><span class="p">,</span> <span class="n">eNULL</span><span class="p">,</span> <span class="n">MD5</span><span class="p">,</span> <span class="n">LOW</span><span class="p">,</span> <span class="mi">3</span><span class="n">DES</span><span class="p">,</span> <span class="n">EXP</span><span class="p">,</span> <span class="n">PSK</span><span class="p">,</span> <span class="n">SRP</span><span class="p">,</span> <span class="n">DSS</span>
|
|||
|
<span class="n">smtpd_tls_security_level</span> <span class="o">=</span> <span class="n">encrypt</span>
|
|||
|
<span class="n">smtpd_tls_mandatory_protocols</span> <span class="o">=</span> <span class="o">!</span><span class="n">SSLv2</span><span class="p">,</span> <span class="o">!</span><span class="n">SSLv3</span>
|
|||
|
<span class="n">smtpd_use_tls</span> <span class="o">=</span> <span class="n">yes</span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<h3>dovecot (imap) :</h3>
|
|||
|
<div class="highlight"><pre><span class="cp"># /etc/dovecot/dovecot.conf </span>
|
|||
|
<span class="cp"># [...]</span>
|
|||
|
<span class="n">ssl_cert</span> <span class="o">=</span> <span class="o"></</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span>
|
|||
|
<span class="n">ssl_key</span> <span class="o">=</span> <span class="o"></</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span>
|
|||
|
<span class="n">ssl_cipher_list</span> <span class="o">=</span> <span class="n">HIGH</span><span class="o">+</span><span class="n">kEDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">+</span><span class="n">kEECDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">:!</span><span class="n">PSK</span><span class="o">:!</span><span class="n">SRP</span><span class="o">:!</span><span class="mi">3</span><span class="n">DES</span><span class="o">:!</span><span class="n">aNULL</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Voila. Pour d'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'aller voir la conférence dans le
|
|||
|
disclaimer, et tant qu'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'une technologie "remplaçant" le système de CAs qui existe
|
|||
|
actuellement.</p></div>
|
|||
|
</div>
|
|||
|
<hr />
|
|||
|
<div class="article">
|
|||
|
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/redesign-du-blog/">Redesign du blog, etc</a></h1>
|
|||
|
<div class="well small"><footer class="post-info">
|
|||
|
<span class="label">Date</span>
|
|||
|
<span class="published" title="2013-06-12T19:14:00+02:00">
|
|||
|
<i class="icon-calendar"></i> Wed 12 June 2013
|
|||
|
</span>
|
|||
|
<br />
|
|||
|
<span class="label">By</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>wxcafe</a>
|
|||
|
<br />
|
|||
|
<span class="label">Category</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
|
|||
|
<br />
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</footer><!-- /.post-info --></div>
|
|||
|
<div class="summary"><p>Comme vous avez pu le remarquer, ce blog a "un peu" changé récemment.</p>
|
|||
|
<p>Du coup, expliquons. J'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'ai tout de suite accroché a ce générateur de
|
|||
|
site statique en python, du fait de son efficacité, de sa facilité d'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'un "thème"
|
|||
|
constitué de templates pour les fichiers html et l'organisation du projet et
|
|||
|
d'une partie "statique" 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="highlight"><pre><span class="n">th</span><span class="err">è</span><span class="n">me</span>
|
|||
|
<span class="err">├──</span> <span class="k">static</span>
|
|||
|
<span class="err">│</span> <span class="err">├─</span> <span class="n">css</span>
|
|||
|
<span class="err">│</span> <span class="err">│</span> <span class="err">└─</span> <span class="p">[</span><span class="n">css</span> <span class="n">files</span><span class="p">]</span>
|
|||
|
<span class="err">│</span> <span class="err">├─</span> <span class="n">img</span>
|
|||
|
<span class="err">│</span> <span class="err">│</span> <span class="err">└─</span> <span class="p">[</span><span class="n">image</span> <span class="n">files</span><span class="p">]</span>
|
|||
|
<span class="err">│</span> <span class="err">└─</span> <span class="n">js</span>
|
|||
|
<span class="err">│</span> <span class="err">└─</span> <span class="p">[</span><span class="n">javascript</span> <span class="n">files</span><span class="p">]</span>
|
|||
|
<span class="err">└──</span> <span class="n">template</span>
|
|||
|
<span class="err">├─</span> <span class="n">base</span><span class="p">.</span><span class="n">html</span>
|
|||
|
<span class="err">├─</span> <span class="n">index</span><span class="p">.</span><span class="n">html</span>
|
|||
|
<span class="err">├─</span> <span class="n">page</span><span class="p">.</span><span class="n">html</span>
|
|||
|
<span class="err">├─</span> <span class="p">[...]</span>
|
|||
|
<span class="err">└─</span> <span class="n">article</span><span class="p">.</span><span class="n">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'un des grands avantages de pelican est aussi la facilité qu'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'existant pas la dernière fois, etc...
|
|||
|
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'est moi
|
|||
|
qui ait modifié les templates et le css), c'est lisible (puisque c'est du
|
|||
|
python, par opposition au PHP...), et c'est plus "efficace". Le markdown est
|
|||
|
très pratique, je peux utiliser mon éditeur de texte de prédilection pour faire
|
|||
|
les articles, je n'ai pas besoin d'un accès continu au net, bref, c'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'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'est juste un manque de temps de ma part, mais vu
|
|||
|
que toutes les pages passent par les mêmes templates, c'est assez facile a
|
|||
|
faire.</p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>Perte du spam:
|
|||
|
Pourquoi c'est dans les points négatifs, ca?</p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>Temps d'adaptation et d'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'est parce que j'apprend a me servir de ce système
|
|||
|
et que j'apprend du css et du html. Ca arrive, ca passera, mais dans tous
|
|||
|
les cas ca me permet d'apprendre plein de choses, donc je mets plutôt ca
|
|||
|
dans la catëgorie positive.</p>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<p>Voila, c'est mon retour d'expérience sur pelican. A plus. </p></div>
|
|||
|
</div>
|
|||
|
<hr />
|
|||
|
<div class="article">
|
|||
|
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/update/">Update</a></h1>
|
|||
|
<div class="well small"><footer class="post-info">
|
|||
|
<span class="label">Date</span>
|
|||
|
<span class="published" title="2013-01-05T18:32:00+01:00">
|
|||
|
<i class="icon-calendar"></i> Sat 05 January 2013
|
|||
|
</span>
|
|||
|
<br />
|
|||
|
<span class="label">By</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
|
|||
|
<br />
|
|||
|
<span class="label">Category</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
|
|||
|
<br />
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</footer><!-- /.post-info --></div>
|
|||
|
<div class="summary"><p>Juste une petite note pour annoncer le prochain article, consacré a la
|
|||
|
fabrication d'une PirateBox basée sur un Raspberry Pi. Voila, a bientôt
|
|||
|
sur le blog!</p></div>
|
|||
|
</div>
|
|||
|
<hr />
|
|||
|
<div class="article">
|
|||
|
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/">Update a propos du blog</a></h1>
|
|||
|
<div class="well small"><footer class="post-info">
|
|||
|
<span class="label">Date</span>
|
|||
|
<span class="published" title="2012-09-18T16:57:00+02:00">
|
|||
|
<i class="icon-calendar"></i> Tue 18 September 2012
|
|||
|
</span>
|
|||
|
<br />
|
|||
|
<span class="label">By</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
|
|||
|
<br />
|
|||
|
<span class="label">Category</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
|
|||
|
<br />
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</footer><!-- /.post-info --></div>
|
|||
|
<div class="summary"><p>Bonsoir! Un petit post pour faire un peu le point sur ce blog.<br />
|
|||
|
Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais
|
|||
|
que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y
|
|||
|
avoir un tantinet réfléchi, ceci est du a deux points principaux :</p>
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<p>Tout d'abord, le manque d'inspiration, tout simplement. C'est assez
|
|||
|
compliqué de trouver des sujets intéressants liés a l'informatique, et
|
|||
|
qui méritent un article. Je vous invite d'ailleurs a me suggérer des
|
|||
|
sujets via les commentaires ou twitter (<a href="https://twitter.com/wxcafe">@Wxcafe</a>)</p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>Ensuite, le délai de 8 jours est trop court pour me permettre de faire
|
|||
|
les recherches nécessaires, tout en manageant mes cours et mon temps
|
|||
|
libre.</p>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<p>A cause de cela, j'ai pris la décision de changer le rythme de parution
|
|||
|
des articles a un *minimum* d'un post tous les 10 jours. Bien entendu,
|
|||
|
si j'ai de l'inspiration en trop, plus de posts sont envisageables.</p>
|
|||
|
<p>Voila. A part ca, je tiens a vous remercier de me lire (c'est assez
|
|||
|
étonnant de voir ca...), et je précise que je vais ajouter une page
|
|||
|
About Me, qui bien entendu rassemblera des informations sur moi, ma vie,
|
|||
|
mon oeuvre :P</p>
|
|||
|
<p>Ceci dit, je vais bosser un peu sur le prochain article.</p>
|
|||
|
<p>A plus tard!</p></div>
|
|||
|
</div>
|
|||
|
<hr />
|
|||
|
<div class="article">
|
|||
|
<h1><a href="file:///home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/">Débuts, présentation, etc...</a></h1>
|
|||
|
<div class="well small"><footer class="post-info">
|
|||
|
<span class="label">Date</span>
|
|||
|
<span class="published" title="2012-08-18T20:27:00+02:00">
|
|||
|
<i class="icon-calendar"></i> Sat 18 August 2012
|
|||
|
</span>
|
|||
|
<br />
|
|||
|
<span class="label">By</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/author/wxcafe.html"><i class="icon-user"></i>Wxcafe</a>
|
|||
|
<br />
|
|||
|
<span class="label">Category</span>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/"><i class="icon-folder-open"></i>Notes</a>
|
|||
|
<br />
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</footer><!-- /.post-info --></div>
|
|||
|
<div class="summary"><p>Bonjour!</p>
|
|||
|
<p>Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur
|
|||
|
Twitter, mais aussi sur IRC (Je traîne pas mal sur
|
|||
|
irc.freenode.net/##nolife et #debian-fr)</p>
|
|||
|
<p>J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je
|
|||
|
fais partie de ce genre de personne qui sont capables d'investir tout
|
|||
|
leur temps et leur énergie a s’intéresser a un sujet en particulier, et
|
|||
|
qui ne peuvent pas vivre sans leurs passions, avec une petite différence
|
|||
|
cependant, qui est que je m’intéresse a plusieurs choses :
|
|||
|
l'informatique, qui est un champ tellement large qu'on peut passer une
|
|||
|
vie a apprendre des choses dessus, et plus particulièrement à
|
|||
|
l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres
|
|||
|
{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les
|
|||
|
trolls seront a partir de maintenant indiqués avec le tag [tr]] du
|
|||
|
libre, je préfère utiliser de l'open-source si c'est possible},
|
|||
|
programmation en C, python et java, etc...) , mais aussi a
|
|||
|
l’électronique. </p>
|
|||
|
<p>Dans un tout autre registre, je m’intéresse aussi
|
|||
|
beaucoup aux différents aspects du féminisme et des égalités sexuelles
|
|||
|
(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) ,
|
|||
|
et a la culture dite "geek" en général.</p>
|
|||
|
<p>Je tenterai de poster ici le plus souvent possible, mais j'ai de gros
|
|||
|
problèmes en terme de régularité de post, donc ne vous inquiétez pas si
|
|||
|
vous ne voyez rien pendant deux semaines.</p>
|
|||
|
<p>Merci beaucoup de votre attention, et a bientôt!</p></div>
|
|||
|
</div>
|
|||
|
<hr />
|
|||
|
<section id="content" class="body">
|
|||
|
<h1>Pages</h1>
|
|||
|
<li><a href="file:///home/wxcafe/code/blog-source/output/pages/about/">A propos</a></li>
|
|||
|
</section>
|
|||
|
</div><!--/span-->
|
|||
|
<div class="span3 well sidebar-nav" id="sidebar">
|
|||
|
<ul class="nav nav-list">
|
|||
|
|
|||
|
|
|||
|
<!-- Categories links -->
|
|||
|
<li class="nav-header"><h4><i class="icon-folder-close icon-large"></i> Categories</h4></li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/hacking/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Hacking
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/language/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Language
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/notes/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Notes
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/oses/">
|
|||
|
<i class="icon-folder-open icon-large"></i>OSes
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/programmation/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Programmation
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/ranting/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Ranting
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/teaching/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Teaching
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/tutorial/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Tutorial
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/tutoriel/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Tutoriel
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="file:///home/wxcafe/code/blog-source/output/category/vidya-games/">
|
|||
|
<i class="icon-folder-open icon-large"></i>Vidya Games
|
|||
|
</a>
|
|||
|
</li>
|
|||
|
<hr>
|
|||
|
|
|||
|
<!-- Social links -->
|
|||
|
<li class="nav-header"><h4><i class="icon-exchange"></i> social</h4></li>
|
|||
|
<a class="FlattrButton" style="display:none;"
|
|||
|
title="file:///home/wxcafe/code/blog-source/output"
|
|||
|
style="padding-top: 10px;"
|
|||
|
rel="flattr;
|
|||
|
url:file:///home/wxcafe/code/blog-source/output;
|
|||
|
title:file:///home/wxcafe/code/blog-source/output;
|
|||
|
button:compact;
|
|||
|
popout:0;
|
|||
|
uid:wxcafe;
|
|||
|
category:blog;"
|
|||
|
href="file:///home/wxcafe/code/blog-source/output">flattr</a>
|
|||
|
<li><a href="https://twitter.com/wxcafe"><i class="icon-twitter icon-large"></i> Twitter</a></li>
|
|||
|
<li><a href="https://github.com/wxcafe"><i class="icon-github icon-large"></i> Github</a></li>
|
|||
|
<li><a href="mailto://wxcafe@wxcafe.net"><i class="icon-envelope icon-large"></i> Email</a></li>
|
|||
|
<li><a href="https://data.wxcafe.net/wxcafe.asc"><i class="icon-key icon-large"></i> Gpg</a></li>
|
|||
|
<li><a href="finger://wxcafe@wxcafe.net"><i class="icon-terminal icon-large"></i> Finger</a></li>
|
|||
|
<li><a href="http://leloop.org/where.html"><i class="icon-map-marker icon-large"></i> IRL</a></li>
|
|||
|
|
|||
|
<hr>
|
|||
|
|
|||
|
<!-- Links -->
|
|||
|
<li class="nav-header"><h4><i class="icon-external-link"></i> Links</h4></li>
|
|||
|
<li><a href="https://github.com/wxcafe/blog-source"><i class="icon-code icon-large "></i> Source!</a></li>
|
|||
|
<li><a href="http://paste.wxcafe.net"><i class="icon-paste icon-large "></i> Zerobin</a></li>
|
|||
|
<li><a href="http://git.wxcafe.net"><i class="icon-github-sign icon-large "></i> Public Git</a></li>
|
|||
|
<hr>
|
|||
|
|
|||
|
<!--- RSS feed -->
|
|||
|
<li class="nav-header"><h4><i class="icon-rss"></i> feeds</h4></li>
|
|||
|
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.rss.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> RSS</a></li>
|
|||
|
<li><a href="file:///home/wxcafe/code/blog-source/output/feeds/feed.atom.xml" rel="alternate"><i class="icon-bookmark-empty icon-large"></i> Atom</a></li>
|
|||
|
|
|||
|
|
|||
|
</ul> </div><!--/.well -->
|
|||
|
</div><!--/row-->
|
|||
|
<hr>
|
|||
|
<footer>
|
|||
|
<address id="about">
|
|||
|
Proudly powered by <a href="http://pelican.notmyidea.org/">Pelican</a>,
|
|||
|
which takes great advantage of <a href="http://python.org">Python</a>.<br />
|
|||
|
Powered by <a href="https://github.com/getpelican/pelican-themes/tree/master/bootstrap2">bootstrap2</a> theme, thanks!
|
|||
|
</address>
|
|||
|
</footer>
|
|||
|
</div><!--/.fluid-container-->
|
|||
|
</body>
|
|||
|
</html>
|