<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Un peu de tout &#187; SSL</title>
	<atom:link href="http://didier.misson.net/blog/tag/ssl/feed/" rel="self" type="application/rss+xml" />
	<link>http://didier.misson.net/blog</link>
	<description>Un blog libre utilisant WordPress</description>
	<lastBuildDate>Mon, 26 Jul 2010 23:58:10 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Sécurisation SSL : Certificat CAcert avec Dovecot et Thunderbird en IMAPs</title>
		<link>http://didier.misson.net/blog/2008/06/17/securisation-ssl-certificat-cacert-avec-dovecot-et-thunderbird-en-imaps/</link>
		<comments>http://didier.misson.net/blog/2008/06/17/securisation-ssl-certificat-cacert-avec-dovecot-et-thunderbird-en-imaps/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 01:36:48 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[Sécurisation]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/2008/06/17/securisation-ssl-certificat-cacert-avec-dovecot-et-thunderbird-en-imaps/</guid>
		<description><![CDATA[Share Après avoir créé un certificat signé par l&#8217;autorité CAcert, je dois configurer mon serveur Dovecot pour utiliser ces clés et mon client mail Thunderbird pour accepter CAcert comme autorité de certification.       Dans mon cas, j&#8217;ai généré un certificat SSL CAcert multi-sites pour l&#8217;utiliser dans mon serveur mails. Mes mails sont en IMAPs [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button-left"><script type="text/javascript">
			<!-- 
			tweetmeme_url = "http://didier.misson.net/blog/2008/06/17/securisation-ssl-certificat-cacert-avec-dovecot-et-thunderbird-en-imaps/";
			tweetmeme_source = "tweetmeme";
			//-->
		</script>
		<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button-left"><a  name="fb_share" type="box_count" share_url="http://didier.misson.net/blog/2008/06/17/securisation-ssl-certificat-cacert-avec-dovecot-et-thunderbird-en-imaps/" href="http://www.facebook.com/sharer.php">Share</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div><div class="socialize-in-button-left"><a  title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" 0="data-button-style="normal-count"" 1="data-url="http://didier.misson.net/blog/2008/06/17/securisation-ssl-certificat-cacert-avec-dovecot-et-thunderbird-en-imaps/""></a>
	<script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div></div><p style="text-align: left">Après avoir créé un certificat signé par l&#8217;autorité CAcert, je dois configurer mon serveur Dovecot pour utiliser ces clés et mon client mail Thunderbird pour accepter <a href="http://www.cacert.org">CAcert</a> comme autorité de certification.</p>
<p align="center"><a  href="http://www.cacert.org" title="CAcert"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/cacert150x60.png" alt="cacert150x60.png" /></a>   <a  href="http://dovecot.org/" title="Dovecot"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/dovecot.gif" alt="dovecot.gif" /></a>   <a  href="http://fr.wikipedia.org/wiki/Mozilla_Thunderbird" title="thunderbird.png"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird.png" alt="thunderbird.png" /></a></p>
<p><span id="more-323"></span>Dans mon cas, j&#8217;ai généré un certificat SSL CAcert multi-sites pour l&#8217;utiliser dans mon serveur mails. Mes mails sont en <a  href="http://fr.wikipedia.org/wiki/Imap">IMAP</a>s et j&#8217;utilise <a  href="http://fr.wikipedia.org/wiki/Dovecot">DOVECOT</a>.</p>
<p>J&#8217;ai donné des noms plus cohérents pour mes certificats :</p>
<ul>
<li>Misson_imap_server.pem  pour le certificat serveur qui vient de CAcert</li>
<li>Misson_imap_privatekey.pem  pour la clé privée qui doit rester secrète</li>
</ul>
<p><strong>Je les transferts donc vers mon serveur distant :</strong></p>
<pre><strong>scp Misson_imap_server.pem didier@monserveurmail:/home/didier</strong></pre>
<pre><strong>scp Misson_imap_privatekey.pem didier@monserveurmail:/home/didier</strong></pre>
<p>Adaptez évidemment les noms des clés, et le nom ou IP adresse du serveur.</p>
<p>Sur le serveur, au quel j&#8217;accède en SSH, <strong>je place les 2 clés dans les bons dossiers</strong> en étant en root, ou avec &laquo;&nbsp;sudo&nbsp;&raquo; suivant votre serveur :</p>
<pre><strong>mv /home/didier/Misson_imap_server.pem /etc/ssl/certs/

mv /home/didier/Misson_imap_privatekey.pem /etc/ssl/private/</strong></pre>
<p><strong>Changez les permissons et le owner sur les 2 clés. J&#8217;autorise Dovecot à y accéder.</strong></p>
<pre><strong>cd /etc/ssl/certs/

chmod u-w Misson_imap_server.pem

chown root:dovecot Misson_imap_server.pem

cd /etc/ssl/private/

chmod u-w Misson_imap_privatekey.pem

chown root:dovecot Misson_imap_privatekey.pem</strong></pre>
<p>Il faut maintenant<strong> indiquer à Dovecot qu&#8217;il doit utiliser ces certificats</strong> CAcert :</p>
<pre><strong>vi /etc/dovecot/dovecot.conf</strong></pre>
<p>Dans mon cas, seul IMAPS est autorisé depuis le Net, IMAP en local pour la communication entre Dovecot et SquirrelMail. J&#8217;ai bloqué le POP3.</p>
<pre><strong>base_dir = /var/run/dovecot/</strong><strong>
</strong><strong>protocols = imap imaps</strong><strong>
</strong><strong>protocol imap {</strong><strong>
</strong><strong>listen = 127.0.0.1:143</strong><strong>
</strong><strong>ssl_listen = *:993</strong><strong>
</strong><strong>}</strong></pre>
<pre><strong>
</strong><strong># protocol pop3 {</strong><strong>
</strong><strong># # listen = *:110</strong><strong>
</strong><strong># # ssl_listen = *:995</strong><strong>
</strong><strong># # }</strong>

<strong>
</strong><strong>###  mettre "no" pour le ssl_disable</strong><strong>
</strong><strong>###  ssl_cert est le certificat serveur de CAcert</strong><strong>
</strong><strong>###  ssl_key est le certificat privé</strong></pre>
<pre><strong>

</strong><strong>ssl_disable = no</strong><strong>
</strong><strong>ssl_cert_file = /etc/ssl/certs/Misson_imap_server.pem</strong><strong>
</strong><strong>ssl_key_file = /etc/ssl/private/Misson_imap_privatekey.pem</strong></pre>
<p style="text-align: center"><a  href="http://dovecot.org/" title="Dovecot"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/dovecot.gif" alt="dovecot.gif" /></a></p>
<p><strong>Il reste à configurer votre client mails.</strong></p>
<p><strong>Attention</strong><em>, il faut d&#8217;abord qu&#8217;il reconnaisse l&#8217;autorité CAcert, sinon il vous donnera un message d&#8217;alerte !</em></p>
<p><a  href="http://wiki.cacert.org/wiki/ThunderBird">La documentation suivante du site CAcert</a> explique comment ajouter les 2 certificats de classe 1 et 3 à Thunderbird, pour qu&#8217;il reconnaisse comme valide l&#8217;autorité CAcet.</p>
<p align="center"><a  href="http://fr.wikipedia.org/wiki/Mozilla_Thunderbird" title="thunderbird.png"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird.png" alt="thunderbird.png" /></a></p>
<p>Allez sur la page des certificats racines de CAcert : <a  href="http://www.cacert.org/index.php?id=3">http://www.cacert.org/index.php?id=3</a></p>
<p><strong>Sauvez les deux &laquo;&nbsp;Root Certificate&nbsp;&raquo; de classe 1 et de classe 3 au format PEM sur votre disque dur.</strong> Attention, vous devez le faire en cliquant avec la touche de droite de votre souris, et ensuite &laquo;&nbsp;enregistrer sous&nbsp;&raquo;, sinon c&#8217;est Firefox (ou autre) qui essayera de les inclure et pas Thunderbird.</p>
<p>Démarrez Thunderbird et allez dans le menu &laquo;&nbsp;Edition&nbsp;&raquo; / &laquo;&nbsp;Préférences&nbsp;&raquo;. Dans le menu &laquo;&nbsp;Avancé&nbsp;&raquo; cliquez sur l&#8217;onglet &laquo;&nbsp;Certificats&nbsp;&raquo;.</p>
<p align="center"><a  href="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird_preference_certificats.png" title="thunderbird_preference_certificats.png" rel="lightbox[323]" class="thickbox no_icon"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird_preference_certificats.thumbnail.png" alt="thunderbird_preference_certificats.png" /></a></p>
<p>Là, cliquer sur &laquo;&nbsp;Voir les certificats&nbsp;&raquo;, puis sur l&#8217;onglet &laquo;&nbsp;Autorités&nbsp;&raquo; :</p>
<p align="center"><a  href="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird_preference_cartificats_autorites.png" title="thunderbird_preference_cartificats_autorites.png" rel="lightbox[323]" class="thickbox no_icon"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird_preference_cartificats_autorites.thumbnail.png" alt="thunderbird_preference_cartificats_autorites.png" /></a></p>
<p>Importez maintenant les 2 certificats que vous aviez sauvé :</p>
<p align="center"><a  href="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird_telechargement_certificat.png" title="thunderbird_telechargement_certificat.png" rel="lightbox[323]" class="thickbox no_icon"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird_telechargement_certificat.thumbnail.png" alt="thunderbird_telechargement_certificat.png" /></a></p>
<p>Sélectionnez les 3 cases et cliquez OK.</p>
<p style="font-weight: bold">Faites de même pour le certificat racine de classe 3 :</p>
<p align="center"><a  href="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird_telechargement_certificat_classe3.png" title="thunderbird_telechargement_certificat_classe3.png" rel="lightbox[323]" class="thickbox no_icon"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird_telechargement_certificat_classe3.thumbnail.png" alt="thunderbird_telechargement_certificat_classe3.png" /></a></p>
<p style="font-weight: bold">Vous devriez maintenant avoir CAcert dans la liste des autorités de certification que reconnaît Thunderbird.</p>
<p>La prochaine fois que vous démarrerez  Thunderbird, il ne devrait plus vous donner de messages d&#8217;alerte disant que votre certificat est auto-signé ou qu&#8217;il ne connait pas CAcert comme autorité.</p>
<p>De mon côté, cela fonctionne parfaitement maintenant. <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p align="center"><a  href="http://fr.wikipedia.org/wiki/Mozilla_Thunderbird" title="thunderbird.png"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/thunderbird.png" alt="thunderbird.png" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2008/06/17/securisation-ssl-certificat-cacert-avec-dovecot-et-thunderbird-en-imaps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sécurisation SSL : Certificat CAcert multi-sites</title>
		<link>http://didier.misson.net/blog/2008/06/16/securisation-ssl-certificat-cacert-multi-sites/</link>
		<comments>http://didier.misson.net/blog/2008/06/16/securisation-ssl-certificat-cacert-multi-sites/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 21:43:15 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Sécurisation]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/2008/06/17/securisation-ssl-certificat-cacert-multi-sites/</guid>
		<description><![CDATA[Share CAcert est une autorité de certification gratuite, vous permettant de générer des certificats SSL. Dans le cas qui m&#8217;intéresse, je vais générer via le site de CAcert des certificats SSL valables pour plusieurs domaines. Nous avons vu comment générer un certificat SSL multisites auto-signé. Cela permet d&#8217;avoir sur un même serveur Apache (ou Exim [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button-left"><script type="text/javascript">
			<!-- 
			tweetmeme_url = "http://didier.misson.net/blog/2008/06/16/securisation-ssl-certificat-cacert-multi-sites/";
			tweetmeme_source = "tweetmeme";
			//-->
		</script>
		<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button-left"><a  name="fb_share" type="box_count" share_url="http://didier.misson.net/blog/2008/06/16/securisation-ssl-certificat-cacert-multi-sites/" href="http://www.facebook.com/sharer.php">Share</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div><div class="socialize-in-button-left"><a  title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" 0="data-button-style="normal-count"" 1="data-url="http://didier.misson.net/blog/2008/06/16/securisation-ssl-certificat-cacert-multi-sites/""></a>
	<script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div></div><p><strong><span style="color: #ff9900;">CAcert est une autorité de certification gratuite</span>, vous permettant de générer des certificats SSL. Dans le cas qui m&#8217;intéresse, <span style="color: #ff9900;">je vais générer via le site de CAcert des certificats SSL valables pour plusieurs domaines.</span></strong></p>
<p align="center"><a title="CAcert" href="http://www.cacert.org"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/cacert150x60.png" alt="cacert150x60.png" /></a></p>
<p><span id="more-314"></span></p>
<p>Nous avons vu comment générer un <a  href="http://didier.misson.net/blog/2008/06/05/securisation-ssl-certificat-auto-signe-multi-sites/"><strong>certificat SSL multisites auto-signé</strong></a>. Cela permet d&#8217;avoir sur un même serveur Apache (ou Exim ou autre) qui n&#8217;a qu&#8217;une seule adresse IP, un certificat SSL qui sera reconnu comme valable pour plusieurs sites en https (ou en IMAPS).</p>
<p><strong>Le problème est que ce <a  href="http://fr.wikipedia.org/wiki/Certificat_%C3%A9lectronique">certificat</a> est auto-signé.</strong> Il ne garanti aucunement que vos sites soient sains, qu&#8217;ils ne soient pas rempli de pièges, spywares, etc etc&#8230; Et surtout, il ne garanti pas que votre site est bien celui que vous affirmez !</p>
<p>En effet, cela revient à dire &laquo;&nbsp;je, sous-signé Mr Machin, certifie que mes sites sont corrects et authentiques&nbsp;&raquo; &#8230; Autrement dit, à vous faire confiance à 100%. Pour quelqu&#8217;un qui ne vous connaît pas&#8230; il y a de quoi hésiter.</p>
<p>L&#8217;idée est donc de <strong>faire établir ce certificat par une autorité connu</strong>, qui va dire &laquo;&nbsp;oui, je déclare que les sites de Mr Machin sont authentiques et fiables&nbsp;&raquo; (je simplifie, car authentique ne veut pas nécessairement dire sain et fiable, mais il est bien connu qu&#8217;un site usurpant l&#8217;identité d&#8217;un autre le fait toujours pour vous piéger !).</p>
<p><span style="color: #ff0000;"><strong>Les sociétés les plus connues sont <a  href="http://www.verisign.fr/">Verisign</a> et <a  href="http://www.thawte.fr/">Thawte</a> .</strong> Ces sociétés prennent soin de vérifier votre identité pour éviter les usurpations. Mais voilà&#8230; ils vendent leur service très cher. Un certificat SSL 128 bits coûte $ 249 par an chez Thawte, et beaucoup plus pour certains types de certificats&#8230;</span> Pas cher pour une grosse société ou un site eCommerce important, mais bien trop pour nous qui gérons notre petit site web ou serveur mails !</p>
<p align="center"><a  title="CAcert" href="http://www.cacert.org"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/cacert150x60.png" alt="cacert150x60.png" /></a></p>
<p align="left"><span style="color: #ff9900;"> Comme souvent dans le libre, ça ne pouvait continuer comme ça ! Certaines personnes sont parties de la question <em><strong>&laquo;&nbsp;Pourquoi devrait-on payer cher pour avoir la sécurité ?&nbsp;&raquo;</strong></em> et ont créés <a  href="http://www.cacert.org">CACert</a>. <strong>CAcert</strong> &laquo;&nbsp;vend&nbsp;&raquo; à un juste prix ces <strong>certificats</strong>&#8230; càd qu&#8217;ils sont <strong>GRATUITS !</strong></span></p>
<p>Evidemment, pas de réel support. Vous êtes supposé savoir ce que vous faites et gérer vous même vos demandes de certificats.</p>
<p align="center"><a  title="CAcert" href="http://www.cacert.org"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/cacert150x60.png" alt="cacert150x60.png" /></a></p>
<p align="left"><strong>Comment est gérée la sécurité alors qu&#8217;on fait tout soi-même ?</strong></p>
<p>Car il n&#8217;y a pas de contrôle physique (téléphone, confirmation écrite, vérification d&#8217;adresses) pour prouver que vous demandez des certificats pour des sites VOUS appartenant bien ? (sinon, vous pourriez demander un certificat signé pour, au hasard, www.laposte.fr et ensuite faire un site authentifié avec un certificat valable !). Ce genre de traitement serait beaucoup trop lourd et il faudrait du personnel&#8230; Impossible&#8230;</p>
<p><span style="color: #ff9900;">D&#8217;abord, <strong>vous devez vous enregistrer sur le site de CAcert</strong>. Vous pouvez ensuite créer des certificats valables 6 mois maximum. C&#8217;est déjà bien, mais un peu contraignant.</span></p>
<p>Si vous désirez pouvoir créer des certificats valables 2 ans, vous devez vous faire parrainer en allant à une <strong>&laquo;&nbsp;CAcert assurance&nbsp;&raquo; party</strong>. Il y en a régulièrement (par exemple, il y en a eu au Fosdem à Bruxelles).</p>
<p>En vous présentant<strong> en personne, avec 2 pièces d&#8217;identité</strong> (carte, visa, permis de conduire), vous prouvez donc que vous êtes bien la personne que vous avez déclaré être sur le site web. A chaque personne qui vous authentifie, vous obtenez des points (en général 10) et quand vous en avez 100, vous obtenez le droit de créer des certificats valables 2 ans. C&#8217;est nettement mieux <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p align="center"><a  title="CAcert" href="http://www.cacert.org"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/cacert150x60.png" alt="cacert150x60.png" /></a></p>
<p align="left"><strong><em>Malgré tout, qu&#8217;est ce qui vous empêcherait de créer des certificats pour un site ne vous appartenant pas, faire passer un de vos sites pour ce site et tromper les utilisateurs ?</em></strong></p>
<p>Évidemment, CAcert peut révoquer des certificats et bloquer votre compte si des plaintes arrivaient chez eux, mais ce serait un peu tard..</p>
<p><span style="color: #ff9900;">Lors de cette création,<strong> CAcert envoie un mail de vérification à une adresse mail de CE domaine</strong> (webmaster@mondomaine.be par exemple) et ce n&#8217;est qu&#8217;après avoir suivi un lien fourni dans ce mail que ce domaine est ajouté dans la liste de vos domaines, et que vous pouvez créer des certificats via le site de CAcert. </span>Évidemment, si le domaine ne vous appartient pas, vous n&#8217;aurez certainement pas accès aux mails du domaine, donc pas moyen d&#8217;usurper l&#8217;identité du site.</p>
<p align="center"><a  title="CAcert" href="http://www.cacert.org"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/cacert150x60.png" alt="cacert150x60.png" /></a></p>
<p align="left"><strong>Maintenant, que vaut la certification de CAcert ?</strong></p>
<ul>
<li>Le propriétaire d&#8217;un site authentifié par CAcert a quand même passé quelques étapes de sécurité</li>
<li>Il est connu. Il a rencontré physiquement plusieures personnes faisant parties de la communauté CAcert : on est sorti du monde virtuel pour avoir une authentification dans le monde réel</li>
<li>Ses noms et adresses sont vérifiées (carte d&#8217;identité, visa, permis) : en cas de problème, en cas d&#8217;arnaque, de sites illégaux, etc, on peut donc le retrouver. Si nécessaire, la police obtiendra directement les coordonnées de la personne qui aurait généré le certificat d&#8217;un site illégal</li>
<li>Le certificat est généré par CAcert, qui peut le révoquer si nécessaire</li>
<li>Pour un utilisateur, c&#8217;est nettement mieux qu&#8217;un certificat auto-signé (&laquo;&nbsp;j&#8217;affirme que mon site est authentique&nbsp;&raquo;&#8230; ça ne fait pas très sérieux)</li>
</ul>
<p>Malheureusement, CAcert n&#8217;est pas connu comme les autres sociétés de certification commerciales&#8230; D&#8217;origine, <strong>ni Ms Internet Explorer, ni Opera, ni même Firefox ne connaissaient CAcert</strong>, et ils vous donnent un message d&#8217;alerte &laquo;&nbsp;autorité de certification inconnue&nbsp;&raquo; <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>Il est heureusement possible d&#8217;<strong>ajouter le certificat racine de CAcert dans Firefox, ou Thunderbird, pour que cette autorité soit reconnue</strong>. Ensuite, tous les sites (ou serveurs mails) signés avec des certificats CAcert passeront sans problème.</p>
<p>Cette étape, de devoir ajouter le certificat racine de CAcert est génante, mais malgré tout plus sécurisante pour les utilisateurs que de devoir accepté votre ou vos certificats auto-signés sans vous connaitre !</p>
<p align="center"><a  title="CAcert" href="http://www.cacert.org"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/cacert150x60.png" alt="cacert150x60.png" /></a></p>
<p align="left"><strong>Après la théorie, passons à la pratique.</strong></p>
<p>Je suppose que vous vous êtes déjà enregistré sur le site de CAcert, que vous êtes bien propriétaire ou gestionnaire des domaines pour lesquels vous voulez demander un certificat, et que vous avez accès à une des boîtes mails standard (webmaster@mondomaine.be par exemple) ou que le gestionnaire peut vous transmettre ces mails.</p>
<p><strong>Comment générer un certificat SSL mutil-sites ?</strong></p>
<p>La génération se fait toujours sur le site de CAcert, mais ce que nous voulons ne se trouve pas dans une page et un formulaire standard.</p>
<p><strong><a  href="http://wiki.cacert.org/wiki/VhostTaskForce">La documentation suivie</a> est celle du site CAcert lui-même</strong>. <span style="color: #ff9900;">Cette documentation cite plusieurs façons d&#8217;arriver au but voulu, mais seule la solution 3 &laquo;&nbsp;Certificate with 1 Common name + 2 Subject Alt Name&nbsp;&raquo; fonctionne correctement et est acceptée par tous les navigateurs !</span></p>
<p>A la fin de la page, vous trouverez le<a  href="http://guillaume.romagny.free.fr/evaldo/csr.sh"> script scr.sh</a> . Recopiez le ou téléchargez le. N&#8217;oubliez pas de le rendre exécutable :</p>
<pre><strong>wget http://guillaume.romagny.free.fr/evaldo/csr.sh</strong></pre>
<pre><strong>chmod u+x csr.sh</strong></pre>
<p>et lancez ce script :</p>
<pre><strong>./csr.sh</strong>
Private Key and Certificate Signing Request Generator
This script was designed to suit the request format needed by
the CAcert Certificate Authority. www.CAcert.org

Short Hostname (ie. imap big_srv www2): www.misson.net
FQDN/CommonName (ie. www.example.com) : www.misson.net
Type SubjectAltNames for the certificate, one per line. Enter a blank line to finish
SubjectAltName: DNS:webmail.misson.net
SubjectAltName: DNS:didier.misson.net
SubjectAltName: DNS:www.libre-pc.be
SubjectAltName: DNS:www.arthur-deco.be
SubjectAltName: DNS:www.les-objets-de-maman.be
SubjectAltName: DNS:
Running OpenSSL...
Generating a 2048 bit RSA private key
................................+++
..........................................................................................+++
writing new private key to '/home/didier/www.misson.net_privatekey.pem'
-----
<strong>Copy the following Certificate Request and paste into CAcert website to obtain a Certificate.
When you receive your certificate, you 'should' name it something like www.misson.net_server.pem</strong>

-----BEGIN CERTIFICATE REQUEST-----
MIIC5DCCAcwCAQAwGTEXMBUGA1UEAxMOd3d3Lm1pc3Nvbi5uZXQwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtCbvSviyDHM47aRvAQ8LVUjGhpE+bAI0d
...
mwit0zAC/11tW6RNVzdxZiHys5HixqhB
-----END CERTIFICATE REQUEST-----

The Certificate request is also available in /home/didier/www.misson.net_csr.pem
The Private Key is stored in /home/didier/www.misson.net_privatekey.pem</pre>
<p><span style="color: #ff9900;">Il reste à <strong>aller sur le site de CAcert, à générer un nouveau certificat de domaine</strong></span> (certificat racine de classe 3), et recopier votre &laquo;&nbsp;Certificate Signing Request&nbsp;&raquo; (la partie en hexadécimal) dans la zone prévue pour.</p>
<p>CAcert vous affiche alors votre certificat serveur. Il vous envoie aussi un mail permettant de le retrouver si nécessaire.</p>
<p><span style="color: #ff9900;">Recopiez le et sauvez le dans un fichier, par exemple le nom conseillé :</span></p>
<pre><strong>vi  www.misson.net_server.pem</strong></pre>
<p><span style="color: #ff9900;">et coller le code hexa que vous avez copié depuis le site CAcert.</span></p>
<p>Transférer maintenant vos 2 certificats, le &laquo;&nbsp;private&nbsp;&raquo; et le &laquo;&nbsp;server&nbsp;&raquo; sur votre serveur Web (ou mails) si vous n&#8217;avez pas exécuter cette procédure sur le serveur lui-même. Faites le par un moyen sécurisé ! En SSH par exemple (scp). FTP n&#8217;est pas vraiment la bonne solution car tout est en clair.</p>
<p>La configuration exacte dépend de votre serveur : Apache2 ou autre serveur Web, serveurs mails, etc&#8230;  <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a title="Dovecot" href="http://dovecot.org/"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2008/06/16/securisation-ssl-certificat-cacert-multi-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sécurisation SSL : Certificat auto-signé multi-sites</title>
		<link>http://didier.misson.net/blog/2008/06/05/securisation-ssl-certificat-auto-signe-multi-sites/</link>
		<comments>http://didier.misson.net/blog/2008/06/05/securisation-ssl-certificat-auto-signe-multi-sites/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 22:31:05 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurisation]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/2008/06/05/securisation-ssl-certificat-auto-signe-multi-sites/</guid>
		<description><![CDATA[Share S&#8217;il est assez facile de mettre plusieurs sites Web sur un seul serveur Apache en http, càd sans sécuriser la connexion, ce l&#8217;est nettement moins si l&#8217;on désire mettre plusieurs domaines en https sur le même serveur ! Ce billet vous expliquera donc comment gérer plusieurs sites HTTPS sur un serveur Web avec une [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button-left"><script type="text/javascript">
			<!-- 
			tweetmeme_url = "http://didier.misson.net/blog/2008/06/05/securisation-ssl-certificat-auto-signe-multi-sites/";
			tweetmeme_source = "tweetmeme";
			//-->
		</script>
		<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button-left"><a  name="fb_share" type="box_count" share_url="http://didier.misson.net/blog/2008/06/05/securisation-ssl-certificat-auto-signe-multi-sites/" href="http://www.facebook.com/sharer.php">Share</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div><div class="socialize-in-button-left"><a  title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" 0="data-button-style="normal-count"" 1="data-url="http://didier.misson.net/blog/2008/06/05/securisation-ssl-certificat-auto-signe-multi-sites/""></a>
	<script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div></div><p>S&#8217;il est assez facile de mettre plusieurs sites Web sur un seul serveur Apache en http, càd sans sécuriser la connexion, <strong>ce l&#8217;est nettement moins si l&#8217;on désire mettre plusieurs domaines en https sur le même serveur !</strong></p>
<p><span style="color: #ff9900;">Ce billet vous expliquera donc <strong>comment gérer plusieurs sites <a href="http://fr.wikipedia.org/wiki/Http#HTTPS">HTTPS</a> sur un serveur Web avec une seul adresse IP</strong>.</span></p>
<p><span id="more-312"></span><em>Cette explication n&#8217;est pas propre à une distribution précise, ni même à Linux. Ce pourrait être BSD, Open Solaris ou même &#8230; Windows IIS (je suppose). Le certificat généré peut aussi être utilisé sur un autre serveur Web que Apache2.</em></p>
<p>La sécurisation se fait en créant un certificat SSL (il serait plus exact de dire <strong><a  title="Transport Layer Security" href="http://fr.wikipedia.org/wiki/SSL">TLS</a></strong>), que Apache (ou un autre serveur Web) va utiliser pour crypter la connexion https. Ce certificat normalement est <strong>propre à UN domaine</strong>.</p>
<p><em>Le problème est simple à comprendre : Apache et votre navigateur Internet cryptent la communication https dés le début, déjà avant même la réception de l&#8217;URL par le serveur Apache. La communication doit donc être cryptée avant qu&#8217;Apache ne sache par exemple si vous allez demander l&#8217;accès au domaine https://www.monsite.be ou https://webmail.monsite.be, ou même un domaine tout à fait différent comme https://www.siteweb2.com <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </em></p>
<p>C&#8217;est bien ça le problème !</p>
<p><span style="color: #ff9900;"><strong>Apache2 est incapable de prendre le bon certificat de cryptage SSL correspondant au site au quel vous désirez accéder car il doit crypter avant de savoir quel sera ce site !</strong></span></p>
<p>Il est donc nécessaire de ne <strong>configurer que UN SEUL certificat SSL valable pour tous vos sites.</strong></p>
<p>On pourrait être tenté d&#8217;utiliser des certificats génériques valables par exemple pour &laquo;&nbsp;*.monsite.be&nbsp;&raquo; ou même &laquo;&nbsp;*.*.be&nbsp;&raquo; ou &laquo;&nbsp;*.*.*&nbsp;&raquo;.</p>
<p>D&#8217;abord, tous les navigateurs ne se comportent pas de la même façon avec ce genre de certificats, mais de plus cela peut devenir une grosse faille de sécurité ! En effet, si vous englobez un nombre trop grand de domaine (&laquo;&nbsp;*.*.be&nbsp;&raquo; par exemple pour permettre à la fois &laquo;&nbsp;www.monsite.be&nbsp;&raquo; et &laquo;&nbsp;www.sitepro2.be&nbsp;&raquo;), votre certificat restera valable même en cas de redirection vers un site très différent (&laquo;&nbsp;www.virus-mechant.be&nbsp;&raquo; par exemple), et comme le certificat SSL restera valide pour ce site, vous risquez de ne pas vous appercevoir de la faille de sécurité ! <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p><strong>Donc, pas de certificat générique !</strong></p>
<p><span style="color: #ff9900;">La solution est de faire un certificat pour un de vos domaines et d&#8217;<strong>indiquer dans ce certificat que le domaine a des &laquo;&nbsp;noms alternatifs&nbsp;&raquo;</strong> (comme des alias).</span></p>
<p>De cette façon, quand votre navigateur fera le contrôle entre le certificat reçu du serveur Web et le domaine qu&#8217;il a demandé, ce certificat correspondra bien tant que le nom de domaine demande est dans la liste, qui peut être assez longue, de noms alternatifs. <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Jean-Christophe Dubacq</strong> a fait <a  href="http://jean-christophe.dubacq.fr/post/Gerer-plusieurs-sites-en-https-derriere-une-seule-adresse-IP">un billet expliquant très bien la solution</a> pour obtenir ce certificat multi-domaines.</p>
<p>Je vais me baser sur ce billet et sur le script qu&#8217;il a fait, et qui facilite vraiment les choses <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Je me connecte (en ssh&#8230;) sur le serveur Web en ligne de commande.</p>
<p><strong>Je récupère d&#8217;abord le script et le fichier de config :</strong></p>
<pre><span style="color: #ff9900;">wget http://jean-christophe.dubacq.fr/public/source/openssl/createkey.sh
wget http://jean-christophe.dubacq.fr/public/source/openssl/openssl-conf.cnf</span></pre>
<p>Je dois <strong>rendre le script exécutable</strong> (pas besoin de le faire en root pour créer le certificat) :</p>
<pre>chmod u+x createkey.sh</pre>
<p><span style="color: #ff9900;"><strong>Il ne reste qu&#8217;à l&#8217;exécuter et à rentrer vos coordonnées et votre liste de domaines et sous-domaines.</strong></span></p>
<p>Dans mon cas, j&#8217;ai un site web et des sous-domaines correspondants à mon blog et à ceux des enfants, ainsi que quelques autres petits sites.</p>
<p>N&#8217;oubliez PAS la passphrase (sauvez la). En théorie elle est demandée au démarrage d&#8217;Apache, mais je pense que le script la supprime ensuite (c&#8217;est quand même plus facile si le serveur redémarre sans votre présence) :</p>
<pre>./createkey.sh misson.net www.misson.net didier.misson.net katy.misson.net sylvain.misson.net files.misson.net www.nitro-modelisme.be</pre>
<pre>passphrase?
 mapassphrasesecrete
 Generating a 1024 bit RSA private key
 ..............++++++
 ...............++++++
 writing new private key to 'privkey.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [FR]:BE
 Locality Name (eg, city) [Paris]:Bruxelles
 Organization Name (eg, company) [World Company]:Didier Misson
 Organizational Unit Name (eg, section) [Internet]:Home
 Common Name (eg, YOUR name) [test.example.org]:www.misson.net
 Email Address [root@example.org]:webmaster@misson.net</pre>
<pre>Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:monchallengepassword
 An optional company name []:.
 writing RSA key
 Signature ok
 subject=/C=BE/L=Bruxelles/O=Didier Misson/OU=Home/CN=www.misson.net/emailAddress=webmaster@misson.net
 Getting Private key
 misson.net.passphrase is the passphrase of your certificate. VERY PRIVATE
 misson.net.csr is the initial request of your certificate. PUBLIC
 misson.net.cnf is the extension section of your certificate. PUBLIC
 misson.net.key is the unprotected key of your certificate. PRIVATE
 misson.net.pkey is the protected key of your certificate. PRIVATE
 misson.net.crt is the certificate itself. PUBLIC
 misson.net.pem is the combined certificate/unprotected key. PRIVATE</pre>
<p><strong>Les éléments importants sont la clé privée (.key) et le certificat publique (.crt)</strong></p>
<p><span style="color: #ff9900;">Vérifiez bien les permissions de ces éléments pour que <strong>seuls &laquo;&nbsp;root&nbsp;&raquo; et le userid utilisé par le werveur Web puissent lire ces clés</strong> (www-data si c&#8217;est Apache2).</span></p>
<pre><span style="color: #ff9900;">sudo chown www-data:www-data misson.net.*
sudo chmod 400 misson.net.*</span></pre>
<p><strong>Déplacez ces 2 clés dans le dossier ssl d&#8217;Apache2</strong> (vérifiez votre config si vous utilisez un autre serveur Web) :</p>
<pre>mv misson.net.crt /etc/apache2/ssl
mv misson.net.key /etc/apache2/ssl</pre>
<p>Il reste à <strong>configurer Apache2</strong> pour utiliser ce certificat pour sécuriser l&#8217;accès à un domaine ou un dossier. Ce n&#8217;est pas l&#8217;objet de ce billet, mais voici un exemple simple :</p>
<pre>vi /etc/apache2/sites-available/didier</pre>
<pre><strong>&lt;VirtualHost didier.misson.net:443&gt;</strong>
        ServerName didier.misson.net
        DocumentRoot /var/www/didier
        ErrorLog /var/log/apache2/didier-error_log
        CustomLog /var/log/apache2/didier-access_log combined
<strong>        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/misson.net.crt
        SSLCertificateKeyFile /etc/apache2/ssl/misson.net.key</strong></pre>
<pre>...</pre>
<p>et évidemment, vérifier qu&#8217;il n&#8217;y a pas d&#8217;erreurs de syntaxe dans la config, et recharger Apache2 :</p>
<pre># <strong>apache2 -t</strong>
Syntax OK</pre>
<pre># <strong>/etc/init.d/apache2 reload</strong></pre>
<p>Voilà, vous avez votre certificat auto-signé, valable pour tous vos domaines et sous-domaines.</p>
<p><strong>Je viens de remarquer qu&#8217;il y avait une petite particularité avec le nouveau Firefox 3.</strong></p>
<p><span style="color: #ff9900;"><strong>Ce certificat est auto-signé.</strong></span></p>
<p>Ok, on accède à votre site en https. Mais si le cryptage garantit la confidentialité (échange de mot de passe, etc), il ne garantit pas à vos visiteurs que votre site soit correct, sans virus, sans attaque, etc&#8230; Ni même que c&#8217;est bien votre site ! En effet, n&#8217;importe qui peut se créer un certificat auto-signé au nom d&#8217;un site connu (www.bill.com par exemple) et se faire passer pour vous.</p>
<p>Si vous aviez acheté en payant bien cher un certificat chez une autorité reconnue, comme Verisign, la situation serait différente ! Verisign garantirait que c&#8217;est bien vous qui avez demandé la création de ce certificat. Ce n&#8217;est pas le cas ici (bien trop cher Verisign) et personne de connu et de sérieux n&#8217;affirme haut et fort que vous êtes digne de confiance&#8230; <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p style="font-weight: bold">Et bien, ça, Firefox 3 le signale ! Il donne un message d&#8217;erreur indiquant que le certificat est auto-signé et considéré comme non sûr :</p>
<p align="center"><a  title="firefox3_certificat_invalide_auto-signe.png" href="http://didier.misson.net/blog/wp-content/uploads/2008/06/firefox3_certificat_invalide_auto-signe.png" rel="lightbox[312]" class="thickbox no_icon"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/06/firefox3_certificat_invalide_auto-signe.thumbnail.png" alt="firefox3_certificat_invalide_auto-signe.png" /></a></p>
<p>Il est heureusement possible de continuer, en forçant Firefox 3 à considérer votre site personnel comme fiable et à accepter le certificat <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Mais il y a une autre possibilité : ne pas utiliser un certificat auto-signé, mais le faire générer par une autorité de certification &laquo;&nbsp;reconnue&nbsp;&raquo; &#8230;</p>
<p>Laissons donc tomber Verisign &amp; co, bien trop cher pour un particulier ou un petit site&#8230; et tournons nous vers <span style="font-weight: bold">CAcert</span> <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>CAcert, si elle n&#8217;est pas encore vraiment une autorité reconnue, est déjà plus appréciée que votre propre signature personnelle totalement inconnue de vos visiteurs <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>De plus, et c&#8217;est ce qui m&#8217;importe présentement : <a  href="http://www.cacert.org"><strong>CAcert</strong></a> est une structure communautaire qui fourni des certificats gratuitement !</p>
<p><em><a  href="http://wiki.cacert.org/wiki/VhostTaskForce">Générer un certificat signé par CAcert, valable pour plusieurs domaines</a> et sous-domaines sur une seule adresse IP sera l&#8217;objet de mon prochain billet</em> <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2008/06/05/securisation-ssl-certificat-auto-signe-multi-sites/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Debian : faille de sécurité dans OpenSSL</title>
		<link>http://didier.misson.net/blog/2008/05/15/debian-faille-de-securite-dans-openssl-2/</link>
		<comments>http://didier.misson.net/blog/2008/05/15/debian-faille-de-securite-dans-openssl-2/#comments</comments>
		<pubDate>Thu, 15 May 2008 14:41:19 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Exim]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Sécurisation]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/2008/05/15/debian-faille-de-securite-dans-openssl-2/</guid>
		<description><![CDATA[Share Vous l&#8217;avez peut-être déjà lu, mais une faille de sécurité assez critique affecte OpenSSL dans les distributions Debian et dérivés (Ubuntu par exemple). OpenSSL est utilisé pour les connexions &#171;&#160;sécurisées&#160;&#187; en SSH et les certificats SSL des sites web. Ce sont les applications les plus connues, mais d&#8217;autres utilisent également OpenSSL, comme OpenVPN, IMAPS, [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button-left"><script type="text/javascript">
			<!-- 
			tweetmeme_url = "http://didier.misson.net/blog/2008/05/15/debian-faille-de-securite-dans-openssl-2/";
			tweetmeme_source = "tweetmeme";
			//-->
		</script>
		<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button-left"><a  name="fb_share" type="box_count" share_url="http://didier.misson.net/blog/2008/05/15/debian-faille-de-securite-dans-openssl-2/" href="http://www.facebook.com/sharer.php">Share</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div><div class="socialize-in-button-left"><a  title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" 0="data-button-style="normal-count"" 1="data-url="http://didier.misson.net/blog/2008/05/15/debian-faille-de-securite-dans-openssl-2/""></a>
	<script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div></div><p>Vous l&#8217;avez peut-être déjà lu, mais une <strong>faille de sécurité assez critique affecte <a href="http://fr.wikipedia.org/wiki/Openssl">OpenSSL</a></strong> dans les distributions <strong>Debian</strong> et dérivés (<strong>Ubuntu</strong> par exemple). OpenSSL est utilisé pour les connexions &laquo;&nbsp;sécurisées&nbsp;&raquo; en <strong>SSH</strong> et les <strong>certificats SSL</strong> des sites web. Ce sont les applications les plus connues, mais d&#8217;autres utilisent également OpenSSL, comme OpenVPN, IMAPS, POPS&#8230;</p>
<p style="text-align: center"><a  href="http://xkcd.com/221/" title="Générateur de nombre aléatoire"><img src="http://didier.misson.net/blog/wp-content/uploads/2008/05/random_number.png" alt="Générateur de nombre aléatoire" /></a></p>
<p align="center">dessin en <a  href="http://creativecommons.org/licenses/by-nc/2.5/deed.fr">licence CC by nc</a> du site <a  href="http://xkcd.com/">Xkcd</a></p>
<p><span id="more-267"></span>Le problème, propre à la version inclue dans Debian, est que le générateur de nombre aléatoire utilisé pour générer la clé, n&#8217;est pas vraiment aléatoire&#8230; <em>Pas aléatoire</em> veut dire <em>prédictible</em>,  c&#8217;est à dire qu&#8217;<em>on peut trouver votre clé</em> et entrer en SSH dans votre serveur ou se faire passer pour vous en générant un faux certificat SSL, etc&#8230;</p>
<p>Je ne vais pas tout réexpliquer en détail. Les articles suivants vous en disent un peu plus :</p>
<ul>
<li><a  href="http://linuxfr.org/2008/05/15/24092.html" title="Sécurité : Découverte d'une faille de sécurité critique dans OpenSSL de Debian ">http://linuxfr.org/2008/05/15/24092.html</a></li>
<li><a  href="http://roland.entierement.nu/blog/2008/05/15/branle-bas-sshssl.html" title="Branle-bas SSH/SSL">http://roland.entierement.nu/blog/2008/05/15/branle-bas-sshssl.html</a></li>
</ul>
<p>La première chose à faire est de mettre à jour sa distribution. Ainsi les modules corrigés seront installés :</p>
<pre>aptitude update</pre>
<pre>aptitude dist-upgrade</pre>
<p><strong><u>Mais ce n&#8217;est PAS suffisant !</u> </strong></p>
<p>Les clés faibles (càd facilement crackables) sont encore utilisées sur votre machine.</p>
<p><strong>Il est nécessaire de recréer ces clés !</strong></p>
<p>La procédure varie suivant le programme en cause.</p>
<p>Je reviens sur cette regénération des clés dans mon prochain billet.</p>
]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2008/05/15/debian-faille-de-securite-dans-openssl-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sécurisation SSL : configuration Apache pour phpMyAdmin en https</title>
		<link>http://didier.misson.net/blog/2008/01/06/securisation-ssl-configuration-apache-pour-phpmyadmin-en-https/</link>
		<comments>http://didier.misson.net/blog/2008/01/06/securisation-ssl-configuration-apache-pour-phpmyadmin-en-https/#comments</comments>
		<pubDate>Sun, 06 Jan 2008 17:41:24 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Sécurisation]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=184</guid>
		<description><![CDATA[Après avoir généré un certificat auto-signé pour le sous-domaine "phpmyadmin.misson.net",<br /> je vais maintenant configurer Apache 2. <p> <a href="http://httpd.apache.org/" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Linux/Apache_HTTPd_logo.png" border="0" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button-left"><script type="text/javascript">
			<!-- 
			tweetmeme_url = "http://didier.misson.net/blog/2008/01/06/securisation-ssl-configuration-apache-pour-phpmyadmin-en-https/";
			tweetmeme_source = "tweetmeme";
			//-->
		</script>
		<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button-left"><a  name="fb_share" type="box_count" share_url="http://didier.misson.net/blog/2008/01/06/securisation-ssl-configuration-apache-pour-phpmyadmin-en-https/" href="http://www.facebook.com/sharer.php">Share</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div><div class="socialize-in-button-left"><a  title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" 0="data-button-style="normal-count"" 1="data-url="http://didier.misson.net/blog/2008/01/06/securisation-ssl-configuration-apache-pour-phpmyadmin-en-https/""></a>
	<script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div></div><p>Après avoir généré un certificat auto-signé pour le sous-domaine &laquo;&nbsp;phpmyadmin.misson.net&nbsp;&raquo;,<br />
je vais maintenant configurer Apache 2.</p>
<p><a href="http://httpd.apache.org/" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Linux/Apache_HTTPd_logo.png" border="0" /></a><br />
<span id="more-184"></span><br />
J&#8217;ai pris phpMyAdmin comme exemple, et car je pense que cet accès doit être sécurisé, mais vous pouvez vous baser sur ce billet pour sécuriser tout autre site ou sous-domaine.</p>
<p>A l&#8217;installation de <a  href="http://www.phpmyadmin.net" hreflang="fr">phpMyAdmin</a>, un fichier de configuration a été créé dans la liste des sites disponibles pour Apache.<br />
Je vais d&#8217;abord, par soucis de clarté, changer le nom de ce membre.</p>
<p><strong>D&#8217;abord, je le désactive d&#8217;Apache 2 :</strong></p>
<pre>$ <strong>sudo a2dissite phpmyadmin</strong> Site phpmyadmin disabled; run /etc/init.d/apache2 reload to fully disable.</pre>
<p>Je veux que phpMyAdmin réponde à l&#8217;URL <strong>http://phpmyadmin.misson.net</strong><br />
et par après, à l&#8217;URL <strong>https://phpmyadmin.misson.net</strong></p>
<p>Je renomme le fichier (je vais faire un COPY pour conserver l&#8217;original, en cas d&#8217;erreur) :</p>
<pre>$ <strong>sudo cp phpmyadmin phpmyadmin.misson.net</strong></pre>
<p><strong>Le fichier de définition pour l&#8217;accès en http ressemble à ceci :</strong></p>
<pre># phpMyAdmin default Apache configuration &lt; VirtualHost phpmyadmin.misson.net:80&gt;         ServerName phpmyadmin.misson.net         DocumentRoot /usr/share/phpmyadmin         ErrorLog /var/log/apache2/phpmyadmin.misson.net-error_log         CustomLog /var/log/apache2/phpmyadmin.misson.net-access_log combined ## Alias /phpadmin03 /usr/share/phpmyadmin &lt; Directory /usr/share/phpmyadmin&gt;         Options Indexes FollowSymLinks         DirectoryIndex index.php         # Authorize for setup         &lt; Files setup.php&gt;             # For Apache 1.3 and 2.0             &lt; IfModule mod_auth.c&gt;                 AuthType Basic                 AuthName "phpMyAdmin Setup"                 AuthUserFile /etc/phpmyadmin/htpasswd.setup             &lt; /IfModule&gt;             # For Apache 2.2             &lt; IfModule mod_authn_file.c&gt;                 AuthType Basic                 AuthName "phpMyAdmin Setup"                 AuthUserFile /etc/phpmyadmin/htpasswd.setup             &lt; /IfModule&gt;             Require valid-user         &lt; /Files&gt;         &lt; IfModule mod_php4.c&gt;                 AddType application/x-httpd-php .php                 php_flag magic_quotes_gpc Off                 php_flag track_vars On                 php_flag register_globals Off                 php_value include_path .         &lt; /IfModule&gt;         &lt; IfModule mod_php5.c&gt;                 AddType application/x-httpd-php .php                 php_flag magic_quotes_gpc Off                 php_flag track_vars On                 php_flag register_globals Off                 php_value include_path .         &lt; /IfModule&gt; &lt; /Directory&gt; &lt; /VirtualHost&gt;</pre>
<p>Adaptations simples donc, qui ne font que de rendre disponible à l&#8217;URL <strong>http://phpmyadmin.misson.net/</strong></p>
<p>N&#8217;oubliez pas que, pour rendre une modification active dans Apache2, il faut le recharger :</p>
<pre>$ <strong>sudo /etc/init.d/apache2 reload</strong>  * Reloading web server config apache2                               4484                                                                                    [ OK ]</pre>
<p><a  href="http://httpd.apache.org/" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Linux/Apache_HTTPd_logo.png" border="0" /></a></p>
<p><strong>Pour rendre accessible phpMyAdmin en https</strong>, il faut évidemment modifier le port en 443, inclure les définitions pour le SSL et les certificats à utiliser.<br />
Mais si je ne mets que les définitions pour le SSL en 443, j&#8217;ai un comportement étrange : l&#8217;URL http://phpmyadmin.misson.net/ répond toujours, mais avec une mise en page foireuse (probablement qu&#8217;il ne trouve plus les CSS).</p>
<p>Pour éviter cela, et comme je ne veux pas laisser la possibilité de s&#8217;authentifier dans phpMyAdmin dans être en mode encrypté, je force le mode ssl.<br />
<a  href="http://doc.ubuntu-fr.org/tutoriel/securiser_apache2_avec_ssl" hreflang="fr">Une documentation à ce sujet</a> sur <a  href="http://ubuntu-fr.org" hreflang="fr">Ubuntu-fr.org</a>.</p>
<p><strong>Je vais donc rediriger les appels http vers https :</strong></p>
<pre>$ <strong>sudo vi /etc/apache2/sites-available/phpmyadmin.misson.net</strong></pre>
<pre># phpMyAdmin default Apache configuration &lt; VirtualHost phpmyadmin.misson.net:80&gt;     ServerName  phpmyadmin.misson.net     <strong>Redirect / https://phpmyadmin.misson.net</strong> &lt; /VirtualHost&gt; &lt; <strong>VirtualHost phpmyadmin.misson.net:443</strong>&gt;         ServerName phpmyadmin.misson.net         DocumentRoot /usr/share/phpmyadmin         ErrorLog /var/log/apache2/phpmyadmin.misson.net-error_log         CustomLog /var/log/apache2/phpmyadmin.misson.net-access_log combined         <strong>SSLEngine on         SSLCertificateFile /etc/apache2/ssl/phpmyadmin.misson.net.crt         SSLCertificateKeyFile /etc/apache2/ssl/phpmyadmin.misson.net.key</strong> ## Alias /phpadmin03 /usr/share/phpmyadmin <directory>         Options Indexes FollowSymLinks         DirectoryIndex index.php         # Authorize for setup         <files> ...</files></directory></pre>
<p>Au cas où vous ne l&#8217;auriez pas encore fait, <strong>il faut activer ce site dans la liste des listes d&#8217;Apache 2, et recharger Apache :</strong></p>
<pre>$ <strong>sudo a2ensite phpmyadmin.misson.net</strong> Site phpmyadmin.misson.net installed; run /etc/init.d/apache2 reload to enable. $ sudo /etc/init.d/apache2 reload  * Reloading web server config apache2</pre>
<p><strong>Cela devrait fonctionner !</strong> Et voilà, si vous utilisez l&#8217;URL http://phpmyadmin.misson.net, vous êtes automatiquement redirigé vers la page HTTPS du même site <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a  href="http://httpd.apache.org/" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Linux/Apache_HTTPd_logo.png" border="0" /></a></p>
<p>Une autre utilisation serait, par exemple, de <strong>forcer l&#8217;accès à un WebMail en https</strong>.<br />
Cela éviterait que des userids et mots de passe circulent en clair sur le Net ! <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2008/01/06/securisation-ssl-configuration-apache-pour-phpmyadmin-en-https/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sécurisation SSL : Certificat autosigné</title>
		<link>http://didier.misson.net/blog/2008/01/05/securisation-ssl-certificat-autosigne/</link>
		<comments>http://didier.misson.net/blog/2008/01/05/securisation-ssl-certificat-autosigne/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 23:34:23 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Sécurisation]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=182</guid>
		<description><![CDATA[J'ai expliqué dans un précédent billet, comment obtenir un certificat signé par l'<a href="http://www.cacert.org/" hreflang="fr">autorité de certification CAcert.org</a>. <p> Il y a des cas où il n'est pas nécessaire de passer par une autorité connue.<br /> Par exemple, pour des sous-domaines à usage personnel (en théorie non accessible par le public), ce n'est pas nécessaire.<br /> <strong>On peut alors utiliser un certificat autosigné</strong>, càd que je vais générer et signer moi-même.]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button-left"><script type="text/javascript">
			<!-- 
			tweetmeme_url = "http://didier.misson.net/blog/2008/01/05/securisation-ssl-certificat-autosigne/";
			tweetmeme_source = "tweetmeme";
			//-->
		</script>
		<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button-left"><a  name="fb_share" type="box_count" share_url="http://didier.misson.net/blog/2008/01/05/securisation-ssl-certificat-autosigne/" href="http://www.facebook.com/sharer.php">Share</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div><div class="socialize-in-button-left"><a  title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" 0="data-button-style="normal-count"" 1="data-url="http://didier.misson.net/blog/2008/01/05/securisation-ssl-certificat-autosigne/""></a>
	<script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div></div><p>J&#8217;ai expliqué dans un précédent billet, comment obtenir un certificat signé par l&#8217;<a href="http://www.cacert.org/" hreflang="fr">autorité de certification CAcert.org</a>.</p>
<p>Il y a des cas où il n&#8217;est pas nécessaire de passer par une autorité connue.<br />
Par exemple, pour des sous-domaines à usage personnel (en théorie non accessible par le public), ce n&#8217;est pas nécessaire.<br />
<strong>On peut alors utiliser un certificat autosigné</strong>, càd que je vais générer et signer moi-même.<br />
<span id="more-182"></span><br />
Je me base sur le billet &laquo;&nbsp;<a  href="http://gabriel.magniez.org/dotclear/post/2007/10/10/Generation-certificats-pour-apache2" hreflang="fr">Génération certificats pour Apache</a>&nbsp;&raquo; de <a  href="http://gabriel.magniez.org" hreflang="fr">Gabriel Magniez</a>.</p>
<p>Je vais, comme exemple, générer un certificat autosigné pour mon accès personnel à <a  href="http://www.phpmyadmin.net/home_page/index.php" hreflang="fr">PhpMyAdmin</a>.</p>
<p>Pour ce billet, <strong>mon accès sera à l&#8217;URL http://phpmyadmin.misson.net</strong></p>
<p>Ce n&#8217;est pas la peine d&#8217;essayer d&#8217;atteindre cette URL, j&#8217;utilise en réalité un nom moins facile et qui de toute façon n&#8217;est pas dans les DNS Internet <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>J&#8217;ai déjà généré un certificat avec CAcert.org, mais ce certificat est pour le site &laquo;&nbsp;misson.net&nbsp;&raquo; (il faudra que j&#8217;en fasse également un pour www.misson.net), mais il n&#8217;est pas valide pour &laquo;&nbsp;phpmyadmin.misson.net&nbsp;&raquo;.</p>
<p>Je génère donc un certificat pour &laquo;&nbsp;phpmyadmin.misson.net&nbsp;&raquo;.<br />
<strong>J&#8217;ai un dossier /etc/ssl/CA qui est uniquement accessible par &laquo;&nbsp;root&nbsp;&raquo;</strong> (même en Ubuntu, oui).<br />
Vous pouvez utiliser un autre dossier, mais par sécurité, ce dossier ne doit être accessible QUE par root !</p>
<pre>sudo bash</pre>
<p>Attention, une fois en root, toutes vos commandes passent, même les plus dangereuses (ne vous trompez pas de dossiers, etc).</p>
<pre># cd /etc/ssl/CA</pre>
<p>Il faut d&#8217;abord générer la clé RSA du serveur. J&#8217;ai choisi de lui donner un nom propre au sous-domaine dont je veux générer le certificat :</p>
<pre># <strong>openssl genrsa -out <em>phpmyadmin.misson.net.key</em> 1024</strong> Generating RSA private key, 1024 bit long modulus ............................++++++ .++++++ e is 65537 (0x10001)</pre>
<p><strong>La clé RSA est bien générée :</strong></p>
<pre>root@abrasd03:/etc/ssl/CA# ls -l -rw-r--r-- 1 root root  887 2008-01-06 17:01 phpmyadmin.misson.net.key</pre>
<p><strong>Je génère le certificat auto-signé pour mon sous-domaine &laquo;&nbsp;phpmyadmin&nbsp;&raquo; :</strong></p>
<pre>root@abrasd03:/etc/ssl/CA# <strong>openssl req -new -x509 -days 1096 -key phpmyadmin.misson.net.key -out phpmyadmin.misson.net.crt</strong> You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:BE State or Province Name (full name) [Some-State]:Brabant Wallon Locality Name (eg, city) []:Braine-l'Alleud Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ets Misson Organizational Unit Name (eg, section) []:Misson Didier <strong>Common Name (eg, YOUR name) []:<em>phpmyadmin.misson.net</em></strong> Email Address []:webmaster@misson.net</pre>
<ul>
<li>Le paramètre -day est la durée de validité du certificat. 1096, ça fait 3 ans (en comptant une année bissextile).</li>
<li>Attention au paramètre &laquo;&nbsp;Common Name (YOUR name)&nbsp;&raquo; : c&#8217;est le nom, l&#8217;URL de votre serveur !</li>
</ul>
<p><strong>Vous pouvez vérifier votre certificat par la commande :</strong></p>
<pre># <strong>openssl x509 -in phpmyadmin.misson.net.crt -text -noout</strong> Certificate:     Data:         Version: 3 (0x2)         Serial Number:             e4:0c:40:84:2e:ba:5e:03         Signature Algorithm: sha1WithRSAEncryption         Issuer: C=BE, ST=Brabant Wallon, L=Braine-l'Alleud, O=Ets Misson, OU=Misson Didier, CN=phpmyadmin.misson.net/emailAddress=webmaster@misson.net         Validity             Not Before: Jan  6 16:13:13 2008 GMT             Not After : Jan  6 16:13:13 2011 GMT         Subject: C=BE, ST=Brabant Wallon, L=Braine-l'Alleud, O=Ets Misson, OU=Misson Didier, CN=phpmyadmin.misson.net/emailAddress=webmaster@misson.net         Subject Public Key Info:             Public Key Algorithm: rsaEncryption             RSA Public Key: (1024 bit)                 Modulus (1024 bit):                     00:ac:88:bb:d1:f6:49:d5:98:b9:53:fe:3b:af:ba: ...</pre>
<p>On remarque que ce certificat est bien valable 3 ans <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Il reste à recopier le certificat et la clé privée dans le dossier pour le serveur Apache :</strong></p>
<pre> # <strong>cp phpmyadmin.misson.net.crt /etc/apache2/ssl</strong> # <strong>cp phpmyadmin.misson.net.key /etc/apache2/ssl</strong></pre>
<p>La suite, c&#8217;est la configuration d&#8217;Apache pour que l&#8217;accès à phpMyAdmin se fasse en https (ssl).<br />
Ce sera pour le billet suivant. <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2008/01/05/securisation-ssl-certificat-autosigne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuration SSL : configuration Apache 2</title>
		<link>http://didier.misson.net/blog/2007/12/27/configuration-ssl-configuration-apache-2/</link>
		<comments>http://didier.misson.net/blog/2007/12/27/configuration-ssl-configuration-apache-2/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 00:57:23 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Sécurisation]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=176</guid>
		<description><![CDATA[<a href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" alt="" /></a> <p> Après avoir généré un certificat auto-signé, ou mieux, l'avoir demandé à <a href="http://www.cacert.org" hreflang="fr">CAcert</a>, il reste à configurer <strong><a href="http://www.apache.org" hreflang="fr">Apache 2</a></strong> avant de pouvoir faire du HTTPS. <p> <a href="http://httpd.apache.org/" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Linux/Apache_HTTPd_logo.png" border="0" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button-left"><script type="text/javascript">
			<!-- 
			tweetmeme_url = "http://didier.misson.net/blog/2007/12/27/configuration-ssl-configuration-apache-2/";
			tweetmeme_source = "tweetmeme";
			//-->
		</script>
		<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button-left"><a  name="fb_share" type="box_count" share_url="http://didier.misson.net/blog/2007/12/27/configuration-ssl-configuration-apache-2/" href="http://www.facebook.com/sharer.php">Share</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div><div class="socialize-in-button-left"><a  title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" 0="data-button-style="normal-count"" 1="data-url="http://didier.misson.net/blog/2007/12/27/configuration-ssl-configuration-apache-2/""></a>
	<script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div></div><p><a href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" alt="" /></a>
<p> Après avoir généré un certificat auto-signé, ou mieux, l&#8217;avoir demandé à <a  href="http://www.cacert.org" hreflang="fr">CAcert</a>, il reste à configurer <strong><a  href="http://www.apache.org" hreflang="fr">Apache 2</a></strong> avant de pouvoir faire du HTTPS.
<p> <a  href="http://httpd.apache.org/" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Linux/Apache_HTTPd_logo.png" border="0" alt="" /></a><br />
<span id="more-176"></span><br />
Je me baserai sur <a  href="http://doc.ubuntu-fr.org/tutoriel/securiser_apache2_avec_ssl" hreflang="fr">la documentation sur la sécurisation d&#8217;Apache 2</a> venant du site <a  href="http://ubuntu-fr.org" hreflang="fr">ubuntu-fr.org</a>.
<p> Si vous voulez en savoir plus sur le <a  href="http://www.sebsauvage.net/comprendre/ssl/" hreflang="fr">fonctionnement de SSL, voir cette page</a>.
<p> Tout n&#8217;est pas inclu d&#8217;origine dans Apache2. Certaines fonctionnalités sont sous forme de modules, ce qui évitent de les charger si elles ne sont pas utilisées.
<p> C&#8217;est le cas du fonctionnement en SSL (https). Pour l&#8217;activer il faut charger un module, qui, s&#8217;il est normalement présent dans l&#8217;installation d&#8217;Apache 2, n&#8217;est pas activé à l&#8217;origine :
<pre>$ <strong>sudo a2enmod ssl</strong> Module ssl installed; run /etc/init.d/apache2 force-reload to enable.</pre>
<p> Il faut maintenant <strong>recharger Apache 2 pour qu&#8217;il soit capable de supporter des sites en HTTPS</strong>.
<p> <strong>Mais avant cela, il serait bon de compléter certaines configurations.</strong> <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />
<p> Pour le moment, même si Apache pourrait supporter le protocole SSL, il n&#8217;écoute probablement que sur le port 80 (http).<br /> Le standard que tout le monde (et tous les navigateurs) suit est :
<ul>
<li>http sur le port 80</li>
<li>htts sur le port 443</li>
</ul>
<p> <strong>Il faut donc vérifier si Apache 2 écoute bien aussi sur le port 443.</strong>
<pre>$ <strong>sudo vi /etc/apache2/ports.conf</strong></pre>
<pre>Listen 80 <strong>< IfModule mod_ssl.c>     Listen 443 < /IfModule></strong></pre>
<p> (ne pas mettre les &laquo;&nbsp;blancs&nbsp;&raquo; en début de balises. Je les ai ajouté sinon la balise ne s&#8217;affiche pas sur ce blog)
<p> C&#8217;est bien le cas chez moi.<br /> D&#8217;une façon assez intelligente, <strong>Apache 2 va tester lui-même la présence du module SSL</strong>, et si celui-ci est activé, il écoutera aussi sur le port 443.
<p> Si ce n&#8217;est pas le cas chez vous, ajouter une ligne &laquo;&nbsp;<strong>Listen 443</strong>&laquo;&nbsp;, ou mieux, recopié ce fichier de définition. <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />
<p> <strong>Il faut aussi une directive &laquo;&nbsp;NameVirtualHost&nbsp;&raquo; qui utilise le port 443.</strong>
<pre>$ <strong>sudo vi /etc/apache2/apache2.conf</strong></pre>
<p> J&#8217;ajoute une ligne sur le port 443 :
<pre>### ServerName localhost ServerName 192.168.1.100 NameVirtualHost 192.168.1.100:<strong>80</strong> <strong>NameVirtualHost 192.168.1.100:443</strong></pre>
<p> Attention, vous ne pouvez pas laisser un &laquo;&nbsp;NameVirtualHost 192.168.1.100:<strong>*</strong>&nbsp;&raquo; !<br /> Si vous précisez un port 443, vous ne pouvez plus avoir &laquo;&nbsp;*&nbsp;&raquo;, il faut préciser explicitement le port 80 aussi.
<p> Ce n&#8217;est pas encore complet, mais redémarrons Apache 2 pour voir les messages :
<pre>$ <strong>sudo /etc/init.d/apache2 reload</strong>  * Reloading web server config apache2                                     23787 [Sun Dec 23 08:29:23 2007] <strong>[warn] NameVirtualHost 192.168.168.251:443 has no VirtualHosts</strong>                                    [ OK ]</pre>
<p> <strong>Effectivement, aucune définition de site web n&#8217;utilise encore le https.</strong>
<p> Je fais mes essais sur le site &laquo;&nbsp;<em>misson.net</em>&nbsp;&raquo; et &laquo;&nbsp;<em>www.misson.net</em>&laquo;&nbsp;.<br /> Pour rappel, j&#8217;ai fait le certificat SSL sur &laquo;&nbsp;misson.net&nbsp;&raquo;, mais je verrai cela ensuite.
<p> <strong>je vais d&#8217;abord copier les certificats pour Apache 2 et les mettre dans un dossier SSL</strong> (c&#8217;est un choix, ce n&#8217;est pas obligatoire) :
<pre>$ <strong>cd /etc/apache2/</strong> $ <strong>sudo mkdir ssl</strong></pre>
<p> <strong>Attention, mon dossier CA n&#8217;est accessible qu&#8217;à ROOT&#8230;</strong><br /> Je ne sais pas y accéder avec un SUDO. <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />
<pre>$ <strong>sudo bash</strong> :/etc/apache2# <strong>cp /etc/ssl/CA/misson.net.cert ssl</strong> :/etc/apache2# <strong>cp /etc/ssl/CA/misson.net.key ssl</strong> :/etc/apache2# <strong>exit</strong></pre>
<p> Mes 2 clés sont maintenant dans mon dossier /etc/apache2/ssl.
<p> <strong>Passons à la définition du site https :</strong>
<pre>$ <strong>sudo vi /etc/apache2/sites-available/misson.net</strong></pre>
<p> <VirtualHost www.misson.net:*>         ServerName www.misson.net         ServerAlias misson.net         DocumentRoot /var/www/misson.net         ErrorLog /var/log/apache2/misson.net-error_log         CustomLog /var/log/apache2/misson.net-access_log combined </VirtualHost><strong>
<p> Si je veux que le site soit accessible à la fois eh http et https :</strong>
<pre><strong>< VirtualHost www.misson.net:80></strong>         ServerName www.misson.net         ServerAlias misson.net         DocumentRoot /var/www/misson.net         ErrorLog /var/log/apache2/misson.net-error_log         CustomLog /var/log/apache2/misson.net-access_log combined < /VirtualHost> <strong>< VirtualHost www.misson.net:443></strong>         ServerName www.misson.net         ServerAlias misson.net         DocumentRoot /var/www/misson.net         ErrorLog /var/log/apache2/misson.net-error_log         CustomLog /var/log/apache2/misson.net-access_log combined         <strong>SSLEngine on         SSLCertificateFile /etc/apache2/ssl/misson.net.cert         SSLCertificateKeyFile /etc/apache2/ssl/misson.net.key</strong> < /VirtualHost></pre>
<p> <strong>Attention, si vous avez d&#8217;autres sites web définis, il faut préciser le VirtualHost sur le port 80 pour tous les sites.</strong><br /> Vous ne pouvez pas laisser un membre avec < VirtualHost www.mondomaine.be:*><br /> Il faut mettre < VirtualHost www.mondomaine.be:80> pour tous les sites, y compris ceux qui n&#8217;ont rien de défini pour le https.
<p> Voilà, j&#8217;ai bien mon site Web qui répond à l&#8217;adresse <strong>https://misson.net</strong>
<p> <strong>Mais le certificat n&#8217;est pas reconnu comme valide</strong> <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />
<p> <img src="/blog/wp-content/uploads/2007/dotclear/Internet/certificat_impossible_a_verifier.png" alt="" />
<p> <strong>Ne faites PAS &laquo;&nbsp;Accepter&nbsp;&raquo; !</strong>
<p> Le but n&#8217;est PAS de faire accepter ce site Web https://misson.net, mais de <strong>faire accepter TOUS les sites</strong>, les vôtres et les autres, <strong>dont les certificats seront signés par l&#8217;autorité <em>CAcert</em>.</strong><br /> Ca vous évitera de devoir accepter tous les certificats des sous-domaines (webmail.misson.net, phpmyadmin.misson.net, compta.misson.net, etc etc).
<p> <a  href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" alt="" /></a>
<p> Si je regarde le détail :
<p> <img src="/blog/wp-content/uploads/2007/dotclear/Internet/certificat_impossible_a_verifier_detail.png" alt="" />
<p> <strong>Le certificat est bien pour le site &laquo;&nbsp;<em>misson.net</em>&laquo;&nbsp;.</strong>
<p> Je pense que ce certificat est bon.<br /> <strong>C&#8217;est probablement l&#8217;autorité de certification CAcert qui n&#8217;est pas reconnue.</strong>
<p> Vérifions dans les préférences de Firefox :
<p> <img src="/blog/wp-content/uploads/2007/dotclear/Internet/Firefox_preferences_Chiffrement.png" alt="" />
<p> <img src="/blog/wp-content/uploads/2007/dotclear/Internet/Firefox_certificats_Autorites.png" alt="" />
<p> <strong>Effectivement ! CAcert n&#8217;est pas dans la liste des autorités reconnues.</strong>
<p> Tant que Mozilla Foundation n&#8217;a pas officiellement inclus CAcert dans les autorités reconnues, <strong>il faut l&#8217;ajouter manuellement.</strong>
<p> <strong>Retournons sur la <a  href="http://www.cacert.org/index.php?id=3" hreflang="fr">page des &laquo;&nbsp;Root certificats&nbsp;&raquo; du site CAcert</a>.</strong>
<p> <a  href="http://www.cacert.org/index.php?id=3" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/CAcert_root_certificats.png" border="0" alt="" /></a>
<p> Mon erreur vient du fait que, lors de mes essais précédents, j&#8217;avais cliqué sur &laquo;&nbsp;Class 3 PKI key&nbsp;&raquo; et pas sur &laquo;&nbsp;<strong>Class 1 PKI Key (PEM Format)</strong>&laquo;&nbsp;.
<p> <strong>Je clique sur ce lien et Firefox me donne le message :</strong>
<p> <img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert_nouvelle_autorite_certification.png" alt="" />
<p> Le détail.
<p> <img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert_certificat_Signing_Autority.png" alt="" />
<p> Cela semble correct.
<p> <strong>Je sélectionne les 3 confirmations <em>pour les sites Web, pour le courrier et pour les développeurs</em>.</strong>
<p> <img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert_nouvelle_autorite_certification_confirmation.png" alt="" />
<p> Je valide.
<p> <strong>Voilà, ça devrait fonctionner.</strong>
<p> Je retourne à ma page https://misson.net, où je n&#8217;avais pas accepté le certificat.<br /> Je recharge la page, et cette fois, oui ! La page s&#8217;affiche sans message d&#8217;avertissement.
<p> <strong>Mon certificat est valide, Firefox a accepté CAcert comme autorité de certification, et Apache 2 est maintenant bien configuré</strong> <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
<p> <a  href="http://httpd.apache.org/" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Linux/Apache_HTTPd_logo.png" border="0" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2007/12/27/configuration-ssl-configuration-apache-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sécurisation SSL : Certificat par CAcert.org</title>
		<link>http://didier.misson.net/blog/2007/12/22/securisation-ssl-certificat-par-cacertorg/</link>
		<comments>http://didier.misson.net/blog/2007/12/22/securisation-ssl-certificat-par-cacertorg/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 08:48:36 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Sécurisation]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=171</guid>
		<description><![CDATA[Un certificat est nécessaire pour configurer Apache en <strong><a href="http://fr.wikipedia.org/wiki/SSL" hreflang="fr">SSL</a></strong>, càd pour pouvoir faire du <strong>https</strong>. <p> N'ayant pas les moyens (ni le désir) de payer dans les 400 € par an à une société tels que Thawte ou VeriSign pour sécuriser l'accès à mes sites web (webmail par exemple), j'ai choisi de demander mon certificat à <a href="https://www.cacert.org/index.php?id=12" hreflang="fr"><strong>CAcert</strong></a>. <p> <a href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" alt="" /></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button-left"><script type="text/javascript">
			<!-- 
			tweetmeme_url = "http://didier.misson.net/blog/2007/12/22/securisation-ssl-certificat-par-cacertorg/";
			tweetmeme_source = "tweetmeme";
			//-->
		</script>
		<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button-left"><a  name="fb_share" type="box_count" share_url="http://didier.misson.net/blog/2007/12/22/securisation-ssl-certificat-par-cacertorg/" href="http://www.facebook.com/sharer.php">Share</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div><div class="socialize-in-button-left"><a  title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" 0="data-button-style="normal-count"" 1="data-url="http://didier.misson.net/blog/2007/12/22/securisation-ssl-certificat-par-cacertorg/""></a>
	<script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div></div><p>Un certificat est nécessaire pour configurer Apache en <strong><a href="http://fr.wikipedia.org/wiki/SSL" hreflang="fr">SSL</a></strong>, càd pour pouvoir faire du <strong>https</strong>.</p>
<p>N&#8217;ayant pas les moyens (ni le désir) de payer dans les 400 € par an à une société tels que Thawte ou VeriSign pour sécuriser l&#8217;accès à mes sites web (webmail par exemple), j&#8217;ai choisi de demander mon certificat à <a  href="https://www.cacert.org/index.php?id=12" hreflang="fr"><strong>CAcert</strong></a>.</p>
<p><a  href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" /></a><br />
<span id="more-171"></span><br />
Avant de demander un certificat chez CAcert, il faut savoir que CAcert est encore assez récent, et de ce fait, n&#8217;est pas encore reconnu officiellement comme &laquo;&nbsp;autorité de certification&nbsp;&raquo;. C&#8217;est à dire que vos navigateur Ms IE et Firefox n&#8217;ont pas en standard la clé racine de CAcert.<br />
Quand vous accédez à un site certifié par CAcert, vous avez donc un message signalant le problème&#8230;</p>
<p><a  href="http://didier.misson.net/blog/index.php?2007/12/21/182-securisation-ssl-pourquoi-demander-son-certificat-chez-cacertorg" hreflang="fr">Voir à ce sujet mon billet précédent.</a></p>
<p><strong>Donc, le certificat racine définissant CAcert comme autorité reconnue de certification n&#8217;étant pas inclus en standard dans les navigateurs actuels, il faut l&#8217;ajouter manuellement.</strong></p>
<p>Allez sur <a  href="http://www.cacert.org/index.php?id=3" hreflang="fr">la page contenant les certificats racines de CAcert</a>.</p>
<p>J&#8217;ai cliqué sur le <a  href="http://www.cacert.org/certs/class3.crt" hreflang="fr">certificat de classe 3</a> au format PEM.</p>
<p><strong><ins>CORRECTION 27 déc. 2007</ins> : <em>Il ne faut pas choisir le certificat de classe 3, mais le &laquo;&nbsp;<a  href="http://www.cacert.org/certs/root.crt" hreflang="fr">Class 1 PKI key Root Certificat (format PEM)</a>&laquo;&nbsp;</em></strong></p>
<p>Automatiquement, <strong>Firefox reconnaît que c&#8217;est un certificat racine</strong> et me donne le message :</p>
<p><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert_nouvelle_autorite_certification.png" /></p>
<p><strong>Si je visualise le certificat :</strong></p>
<p><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert_details_certificat_class3_root.png" /></p>
<p>Effectivement, CAcert n&#8217;est pas une autorité reconnue par mon navigateur Firefox.</p>
<p>Je sélectionne les 3 choix, donc je reconnais que CAcert est une autorité de certification compétante pour ces 3 choix.</p>
<p><strong>S&#8217;enregistrer chez CAcert.org :</strong></p>
<p>On ne peut pas dire que ce soit compliqué.<br />
Il suffit de remplir le formulaire se trouvant sur la <a  href="https://www.cacert.org/index.php?id=1" hreflang="fr">page &laquo;&nbsp;S&#8217;inscrire&nbsp;&raquo;</a>.</p>
<p>Une adresse email valide (et un mot de passe &laquo;&nbsp;sérieux&nbsp;&raquo;) est nécessaire pour que vous receviez le mail de confirmation.<br />
Dans l&#8217;interface de gestion, vous pouvez si nécessaire ajouter d&#8217;autres adresses mail.</p>
<p>Vous pouvez également définir votre langue par défaut, et votre localisation géographique.</p>
<p>La suite est moins évidente&#8230;</p>
<p><a  href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" /></a></p>
<p>Pour demander un certificat à CAcert.org pour votre site, il faut générer sur votre serveur <a  href="http://wiki.cacert.org/wiki/CSR" hreflang="fr">une demande de certificat, <strong>un CSR</strong></a>.<br />
Cette demande de certificat contiendra des informations au sujet de votre site web, et surtout la clé publique de votre site.</p>
<p>Donc, <strong>commençons par générer vos clés publique</strong> (qui sera envoyée à CAcert) <strong>et privée</strong> (qui ne doit JAMAIS être divulgée).</p>
<p>En Linux, <strong><a  href="http://fr.wikipedia.org/wiki/Openssl" hreflang="fr">OpenSSL</a></strong> est habituellement le moyen utilisé pour générer ces clés.</p>
<p>Ah&#8230; et bien, je n&#8217;ai pas encore installé OpenSSL sur ce serveur <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<pre>$ <strong>sudo aptitude install openssl</strong></pre>
<p><strong>Générons les 2 clés :</strong></p>
<p><strong>Remarque :</strong> Pour la définition des domaines sur le site de CAcert, il est conseillé de définir d&#8217;abord le domaine sans sous domaine, càd d&#8217;abord &laquo;&nbsp;mondomaine.be&nbsp;&raquo; et pas &laquo;&nbsp;www.mondomaine.be&nbsp;&raquo; !</p>
<blockquote><p>Prenez note : Vous avez seulement besoin de saisir la partie principale de votre domaine, par exemple mondomaine.com plutôt que www.mondomaine.com ou www.ceci.est.mon.domaine.com comme le système vérifie le nom de domaine de droite à gauche, c’est préférable à la création de noms de sous-domaines quand vous chargez un CSR dans le système.</p></blockquote>
<p>Pour garder un champ vide, tapez un &laquo;&nbsp;.&nbsp;&raquo; .</p>
<pre># <strong>openssl req -nodes -new -days 1100 -keyout mondomaine.be.key -out mondomaine.be.csr</strong></pre>
<pre>Generating a 1024 bit RSA private key .............++++++ ......................++++++</pre>
<pre><strong>writing new private key to 'mondomaine.be.key'</strong> -----
<strong>You are about to be asked to enter information that will be incorporated into your certificate request.</strong>
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value, If you enter '.', the field will be left blank.
 -----</pre>
<pre>Country Name (2 letter code) [AU]:BE
State or Province Name (full name) [Some-State]:Brabant Wallon
Locality Name (eg, city) []:Braine-l'Alleud
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
<strong>Common Name (eg, YOUR name) []:mondomaine.be</strong> Email Address []:didier.misson@mail.com
Please enter the following 'extra' attributes to be sent with your certificate request
<strong>A challenge password []:monmotdepasse</strong>
An optional company name []:.</pre>
<p><strong>N&#8217;oublie pas le &laquo;&nbsp;challenge password&nbsp;&raquo; !</strong></p>
<p>Attention au paramètre &laquo;&nbsp;<strong>Common Name</strong>&laquo;&nbsp;, Your Name, <strong>c&#8217;est le nom réel de votre SITE web</strong> (pas votre nom de famille&#8230;) <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Le paramètre &laquo;&nbsp;<strong>-day 1100</strong>&nbsp;&raquo; permet de définir la durée de validité des clés (ici un peu plus de 3 ans). Par défaut il est de 365 jours.<br />
Je ne suis pas sûr qu&#8217;il soit utile ici.<br />
De toute façon, la durée de validité des certificats générés par CAcert est de 6 mois, sauf si on est &laquo;&nbsp;parrainé&nbsp;&raquo;, alors elle est de 2 ans (je verrai ce point plus tard).</p>
<p><strong>2 fichiers ont été générés :</strong></p>
<ul>
<li><strong>mondomaine.be.csr</strong> : <strong>votre demande de certificat</strong> pour CAcert</li>
<li><strong>mondomaine.be.key</strong> : <strong>votre clé privé</strong> que vous gardez bien précieusement dans un dossier où seulement ROOT à accès</li>
</ul>
<p>Le CSR, demande de certificat, ressemble à ceci :</p>
<pre># <strong>less mondomaine.be.csr</strong></pre>
<pre> -----BEGIN CERTIFICATE REQUEST-----
 MIIBgzCB7QIBADBEMQswCQYDVQQGEwJCRTEQMA4GA1UECBMHQnJhYmFudDEPMA0G A1UEAxMGRGlkaWVyMRIwEAYJKoZIhvcNAQkBFgNpY2kwgZ8wDQYJKoZIhvcNAQEB BQADgY0AMIGJAoGBAMg9tFq8/pLt0JJxqP+8ICv7ZhGm4Dn27/T8ft4a/UCMSLjn pTFgR0sZwEYlqjS9mThc5ske3yZVWt+7ZDSQsrOKJlZqj3zNTQsezx7SLg+9J3cu xP/iGyietgqrS1BBubz7QkDchFEBDQ56o9BBdc2Bl97rGDbJVy0ZZ7eic0ejAgMB AAGgADANBgkqhkiG9w0BAQUFAAOBgQCxDmgWLkv+2FHA83oO/vtKBm8qvzg3rvlw GivxM5WP7xMuxkR/cw4KAAgH0cvuybR+7u64rL2FMCF6pAyi4PBbivJzRZAcwa/x ax8y5f+rxjZ4upoKa2W5SHRMzEVPevTKw4qJvVAkFFcMF+u+9oUkXHF9wCLAUMuY n5+o5bGp1A==
 -----END CERTIFICATE REQUEST-----</pre>
<p><strong>Revenons au site CAcert.org :</strong></p>
<p>Choisissez dans le menu &laquo;&nbsp;<strong>Domaine / Add</strong>&laquo;&nbsp;.</p>
<p>Introduisez votre nom de domaine &laquo;&nbsp;<strong>mondomaine.be</strong>&nbsp;&raquo; et cliquer sur &laquo;&nbsp;add&nbsp;&raquo;.</p>
<p><strong>CAcert vous propose une liste d&#8217;adresses mail de confirmation</strong>.<br />
Je sélectionne &laquo;&nbsp;webmaster@mondomaine.be&nbsp;&raquo;.<br />
Évidemment ce mail doit être configuré pour que vous puissiez recevoir le mail envoyé par CAcert.</p>
<p>CAcert m&#8217;affiche le message suivant :</p>
<blockquote><p>The domain &#8216;mondomaine.be&#8217; has been added to the system, however before any certificates for this can be issued you need to open the link in a browser that has been sent to your email address.</p></blockquote>
<p>J&#8217;ai bien reçu un mail sur l&#8217;adresse correspondante. Je suis le lien :</p>
<p><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert_domain_verify.png" /></p>
<p>Je click sur &laquo;&nbsp;Yes verify this domain&nbsp;&raquo;.</p>
<blockquote><p><strong>Updated</strong> Your domain has been verified. You can now start issuing certificates for this domain.</p></blockquote>
<p><strong>Le domaine est donc vérifié</strong>, c&#8217;est à dire que CAcert est certain que celui qui va faire la demande de certificat (moi) est bien quelqu&#8217;un ayant un pouvoir réel sur ce domaine : soit je suis le propriétaire de ce nom de domaine, soit celui-ci m&#8217;a donné autorité (contact technique) ou accès à une des adresses mails. En effet, j&#8217;ai accès au mail d&#8217;une des adresses reconnues de ce domaine (webmaster@mondomaine.be).</p>
<p><strong>Générer un certificat</strong></p>
<p>Aller dans le menu de CAcert dans &laquo;&nbsp;Certificats de domaines / Nouveau&nbsp;&raquo;</p>
<p>Il vous faut copier/coller votre CSR :</p>
<pre><strong>less mondomaine.be.csr</strong></pre>
<p>Et coller le texte dans la zone &laquo;&nbsp;CSR&nbsp;&raquo; du site CAcert :</p>
<blockquote><p>Veuillez svp vous assurer que les détails suivants sont corrects avant de continuer. Nom commun (CommonName): <strong>mondomaine.be</strong> Aucune information supplémentaire ne sera insérée dans nos certificats puisqu&#8217;elles ne peuvent pas être verifiée automatiquement par le système.</p></blockquote>
<p><strong>Je valide et j&#8217;obtiens une page me donnant mon certificat serveur.</strong></p>
<p>Je copie ce texte, c&#8217;est mon certificat, et <strong>je le sauve dans un fichier mondomaine.be.pem</strong> <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Et voilà !</p>
<p><strong>Reste à configurer Apache2.</strong> <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Ce sera pour un billet suivant.</p>
<p><a  href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2007/12/22/securisation-ssl-certificat-par-cacertorg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sécurisation SSL : pourquoi demander son certificat chez CAcert.org ?</title>
		<link>http://didier.misson.net/blog/2007/12/21/securisation-ssl-pourquoi-demander-son-certificat-chez-cacertorg/</link>
		<comments>http://didier.misson.net/blog/2007/12/21/securisation-ssl-pourquoi-demander-son-certificat-chez-cacertorg/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 23:13:41 +0000</pubDate>
		<dc:creator>Didier Misson</dc:creator>
				<category><![CDATA[Serveurs]]></category>
		<category><![CDATA[Sécurisation]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://didier.misson.net/blog/?p=175</guid>
		<description><![CDATA[Un certificat est nécessaire pour configurer Apache en <strong><a href="http://fr.wikipedia.org/wiki/SSL" hreflang="fr">SSL</a></strong>, càd pour pouvoir faire du <strong>https</strong>. <p> <strong>Pourquoi du https ?</strong> <p> Déjà simplement, <strong>pour que vos données, tel que userids et mots de passe</strong>, par exemple pour l'accès à un Webmail, <strong>ne circulent pas en clair sur le Net</strong>, ou pour des sites d'eCommerce (ce n'est pas mon cas actuellement), pour l'accès à certains dossiers d'administration (phpMyAdmin par exemple). <p> <a href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" alt="" /></a> <p> <strong>Mais un certificat permet aussi d'authentifier votre site Web</strong> et ainsi de certifier que ce site est bien le votre et pas un site essayant de se faire passer pour vous.]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button-left"><script type="text/javascript">
			<!-- 
			tweetmeme_url = "http://didier.misson.net/blog/2007/12/21/securisation-ssl-pourquoi-demander-son-certificat-chez-cacertorg/";
			tweetmeme_source = "tweetmeme";
			//-->
		</script>
		<script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div><div class="socialize-in-button-left"><a  name="fb_share" type="box_count" share_url="http://didier.misson.net/blog/2007/12/21/securisation-ssl-pourquoi-demander-son-certificat-chez-cacertorg/" href="http://www.facebook.com/sharer.php">Share</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></div><div class="socialize-in-button-left"><a  title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" 0="data-button-style="normal-count"" 1="data-url="http://didier.misson.net/blog/2007/12/21/securisation-ssl-pourquoi-demander-son-certificat-chez-cacertorg/""></a>
	<script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div></div><p>Un certificat est nécessaire pour configurer Apache en <strong><a href="http://fr.wikipedia.org/wiki/SSL" hreflang="fr">SSL</a></strong>, càd pour pouvoir faire du <strong>https</strong>.
<p> <strong>Pourquoi du https ?</strong>
<p> Déjà simplement, <strong>pour que vos données, tel que userids et mots de passe</strong>, par exemple pour l&#8217;accès à un Webmail, <strong>ne circulent pas en clair sur le Net</strong>, ou pour des sites d&#8217;eCommerce (ce n&#8217;est pas mon cas actuellement), pour l&#8217;accès à certains dossiers d&#8217;administration (phpMyAdmin par exemple).
<p> <a  href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" alt="" /></a>
<p> <strong>Mais un certificat permet aussi d&#8217;authentifier votre site Web</strong> et ainsi de certifier que ce site est bien le votre et pas un site essayant de se faire passer pour vous.<br />
<span id="more-175"></span><br />
<strong>Le plus simple est de <a  href="http://www.lininfo.org/spip.php?article4" hreflang="fr">générer soit-même un certificat SS</a>L.</strong><br /> Evidemment, n&#8217;importe qui peut faire cela, y compris quelqu&#8217;un qui essayerait de se faire passer pour vous.<br /> Ce qui veut dire aussi que, pour la personne qui est devant son PC, pourquoi vous faire confiance, plutôt qu&#8217;à un autre ?<br /> Rien ne prouve en effet que le site Web qui est en https et qui utilise un certificat auto-généré, soit bien le VOTRE !
<p> Pour en être sur, il faut faire intervenir un partenaire.<br /> Partenaire qui va dire à votre utilisateur : &laquo;&nbsp;oui ! Le site www.misson.net, je le connais et je certifie que sa signature est valable !&nbsp;&raquo;.
<p> C&#8217;est le principe de l&#8217;<strong>autorité de certification</strong>.
<p> <strong>Plusieurs sociétés privées existent qui remplissent ce rôle&#8230; <em>gratuitement évidemment&#8230;</em></strong> <br /> <em>euh&#8230; Non ! Pas vraiment !</em> <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />
<p> On devrait même dire &laquo;&nbsp;<strong>Vraiment PAS gratuitement</strong>&nbsp;&raquo; !
<p> Les sociétés les plus connues sont <a  href="http://www.verisign.fr/" hreflang="fr">VeriSign</a> et <a  href="http://www.thawte.fr/" hreflang="fr">Thawte</a>.
<p> <strong>Les prix habituellement demandés pour un certificat valable 1 AN</strong> (et oui, il faut repayer régulièrement) <strong>sont dans les <em>4 à 500 € hors taxe !</em></strong><br /> En payant pour 3 ans, <em>vous &laquo;&nbsp;descendez&nbsp;&raquo; dans les 1000 à 1200 € hors taxe pour 3 ans, PAR SITE WEB.</em>
<p> C&#8217;est à dire que si vous avez www.monsiteweb.be, webmail.monsiteweb.be, forum.monsiteweb.be, il vous faudrait 3 certificats, et payer 3 fois&#8230;
<p> Si ce prix de 400 € par an et par site n&#8217;est rien pour de grosses sociétés tels que (au hasard) Total, la SNCF ou Air France qui acceptent sans problème de payer cette somme pour sécuriser leur site eCommerce, ce n&#8217;est évidemment pas abordable pour un particulier.
<p> <a  href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" alt="" /></a>
<p> Heureusement, <a  href="https://www.cacert.org/index.php?id=12" hreflang="fr">une communauté s&#8217;est formée et a décidé de créer <strong>CAcert</strong></a>, dans le but d&#8217;offrir l&#8217;accès libre et gratuit à la sécurité au plus grand nombre de personne.
<p> <strong>CAcert peut donc vous permettre de demander on-line un certificat pour authentifier un de vos sites</strong>, et cela <strong>gratuitement</strong> !
<p> <strong>Est-ce que cela change quelque chose d&#8217;avoir un certificat (un site web) authentifié par CAcert, au lieu de VeriSign par exemple ?</strong>
<p> En théorie non&#8230; En pratique, <strong>une autorité de certification doit aussi être reconnue !</strong><br /> Les navigateurs courants (Ms IE, Firefox) ont déjà les clés publiques des autorités reconnues.
<p> Ainsi, quand vous arrivez en https sur le site de VeriSign, ou sur un site dont le certificat a été authentifié par VeriSign (et donc qui a accepté de payer ces 400 € par an), Ms IE ou Firefox l&#8217;acceptent directement.
<p> <strong>Ce n&#8217;est pas encore le cas pour CAcert, petit nouveau pas encore très connu.</strong><br /> De ce fait, votre navigateur va vous dire qu&#8217;il ne connait pas cette autorité de certification&#8230;
<p> Avant de demander un certificat chez CAcert, il faut savoir que CAcert est encore assez récent, et de ce fait, n&#8217;est pas encore reconnu officiellement comme &laquo;&nbsp;autorité de certification&nbsp;&raquo;. C&#8217;est à dire que vos navigateur Ms IE et Firefox n&#8217;ont pas en standard la clé racine de CAcert.<br /> Quand vous accédez à un site certifié par CAcert, vous avez donc un message signalant le problème&#8230;
<p> <strong>Quel est l&#8217;intêret alors ?</strong><br /> Au lieu d&#8217;avoir un message d&#8217;avertissement sur le certificat auto-signé de votre site, l&#8217;utilisateur aura un message d&#8217;avertissement disant que l&#8217;autorité de certification est inconnue&#8230;
<p> <strong>Exact, mais je vois malgré tout plusieurs intérêts :</strong>
<ul>
<li>votre certificat auto-signé, le client est obligé de lui faire confiance. Personne d&#8217;autre que vous même n&#8217;affirmer que votre site est digne de confiance !</li>
<li>le certificat signé par CAcert, au moins c&#8217;est déjà une organisation différente, ce n&#8217;est plus vous-même pour votre propre compte</li>
<li>si vous gérez plusieurs sites, ou sous-domaine, vous devez avoir plusieurs certificats&#8230; Vos utilisateurs auront ce message d&#8217;avertissement pour tous vos sites et sous-domaines ! Avec des certificats tous signés par CAcert, l&#8217;utilisateur n&#8217;aura qu&#8217;une seule fois le message d&#8217;avertissement</li>
<li>il suffit d&#8217;une seule opération pour faire accepter CAcert comme nouvelle autorité de certification à votre navigateur. Avec des certificats auto-signés, il faut que l&#8217;utilisateur accepte un à un tous vos certificats</li>
<li>choisir CAcert, c&#8217;est cassé le monopole des grosses firmes genre VeriSign, bien trop chères pour le particulier. Plus il y aura de sites certifiés par CAcert, plus connu sera CAcert, et cette alternative gagnera en crédibilité</li>
<li>Il y a quand même déjà des dizaines de milliers de sites Web certifiés par CAcert&#8230; Ce n&#8217;est plus si négligeable que ça. L&#8217;utilisateur peut rencontrer d&#8217;autres sites signés aussi par CAcert. C&#8217;est mieux que votre certificat auto-signé par vous tout seul.</li>
<li>CAcert essaye actuellement d&#8217;avoir la reconnaissance par Mozilla Foundation. Il n&#8217;y aura alors plus aucun problème avec les sites authentifiés par eux avec Firefox et ses dérivés.</li>
</ul>
<p> En effet, <strong>CAcert a démarré une procédure pour demander à Mozilla de les incorporer parmi les autorités de certifications reconnues par Firefox</strong>, mais cette procédure peut encore prendre &laquo;&nbsp;un certain temps&nbsp;&raquo;.<br /> Pour que CAcert soit aussi reconnu dans les navigateurs tel que Ms IE, la procédure ne semble pas trop compliquée&#8230; mais coûte excessivement cher pour CAcert.
<p> De ce fait, pour le moment, <strong>CAcert.org n&#8217;est pas automatiquement reconnu comme une autorité valide par votre navigateur.</strong>
<p> La solution, pour ne pas avoir de message de warning à chaque fois, est d&#8217;ajouter le certificat racine de CAcert dans votre Firefox.
<p> Cette procédure est expliquée sur le site <a  href="http://poivron.org/blog/index.php/2005/01/12/12-howto-certificat" hreflang="fr">Poivron.org</a> ainsi que <a  href="http://poivron.org/blog/index.php/2005/01/14/13-howto-certificat-tech" hreflang="fr">sur cette 2ème page</a>.
<p> Pour que ce billet ne soit pas trop long, je le divise en 2.
<p> <a  href="http://www.cacert.org/index.php?lang=fr_FR" hreflang="fr"><img src="/blog/wp-content/uploads/2007/dotclear/Internet/cacert150x60.png" border="0" alt="" /></a>
<p> Après cette première partie sur les généralités et mon choix de CAcert, je continuerai donc pour la configuration, dans un 2ème billet. <img src='http://didier.misson.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://didier.misson.net/blog/2007/12/21/securisation-ssl-pourquoi-demander-son-certificat-chez-cacertorg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
