{"id":1223,"date":"2011-06-16T12:10:32","date_gmt":"2011-06-16T10:10:32","guid":{"rendered":"http:\/\/www.laurentmarot.fr\/wordpress\/?p=1223"},"modified":"2015-08-20T08:08:14","modified_gmt":"2015-08-20T06:08:14","slug":"la-creation-des-certificats-avec-openssl-pour-web-securise","status":"publish","type":"post","link":"https:\/\/www.laurentmarot.fr\/wordpress\/?p=1223","title":{"rendered":"Web s\u00e9curis\u00e9 : cr\u00e9ation des certificats avec openSSL"},"content":{"rendered":"<p style=\"text-align: left;\">Vous avez entendu parler de <em><strong>Firesheep<\/strong><\/em>, l&rsquo;extension pour Firefox qui permet de collecter toutes les mots de passe de votre entourage sur les r\u00e9seaux WIFI ouverts ?<\/p>\n<p style=\"text-align: left;\">Vous n&rsquo;avez pas envie que votre site et ses utilisateurs en soient les prochaines victimes ? Une solution simple : <strong>s\u00e9curiser votre site avec SSL\/TLS\/HTTPs<\/strong>.<\/p>\n<p style=\"text-align: left;\">Connectez-vous en tant que <em>root<\/em> et allez dans le r\u00e9pertoire de configuration de votre serveur Apache2 (g\u00e9n\u00e9ralement \/etc\/apache2 mais on peut \u00e9videmment en choisir un autre) et cr\u00e9ez un r\u00e9pertoire appel\u00e9 <em>ssl<\/em>. Vous vous placerez dans ce r\u00e9pertoire afin que les cl\u00e9s et les certificats soient cr\u00e9\u00e9s \u00e0 l&rsquo;int\u00e9rieur avant d&rsquo;effectuer les op\u00e9rations suivantes.<\/p>\n<div lang=\"fr\">\n<h3>Cr\u00e9ation du certificat serveur<\/h3>\n<p style=\"text-align: left;\"><strong>G\u00e9n\u00e9ration de la cl\u00e9 priv\u00e9e<\/strong><\/p>\n<p style=\"text-align: left;\">On g\u00e9n\u00e8re la clef priv\u00e9e avec la commande suivante en d\u00e9finissant un nom de fichier :<\/p>\n<pre class=\"programlisting\"><span style=\"color: #008000;\">openssl genrsa 1024 &gt; servwiki.key<\/span><\/pre>\n<p><\/p>\n<p>La sortie attendue est la suivante :<\/p>\n<pre class=\"programlisting\"><span style=\"color: #008000;\">Generating RSA private key, 1024 bit long modulus\r\n ..................++++++\r\n .................................................................++++++\r\n e is 65537 (0x10001)<\/span><\/pre>\n<p><\/p>\n<p>Si vous souhaitez que cette cl\u00e9 ait un mot de passe (qui vous sera demand\u00e9 \u00e0 chaque d\u00e9marrage d&rsquo;apache, donc \u00e0 \u00e9viter !), ajoutez \u00ab\u00a0<span style=\"color: #008000;\">-des3<\/span>\u00a0\u00bb apr\u00e8s \u00ab\u00a0<span style=\"color: #008000;\">genrsa<\/span> \u00ab\u00a0.<\/p>\n<p>Ceci a pour effet de cr\u00e9er <strong>votre cl\u00e9 priv\u00e9e<\/strong> pour SSL <sup>[<a href=\"#la-creation-des-certificats-avec-openssl-pour-web-securise-n-1\" class=\"footnoted\" id=\"to-la-creation-des-certificats-avec-openssl-pour-web-securise-n-1\">1<\/a>]<\/sup>, ne la perdez pas (ni le mot de passe \u00e9ventuel) !<\/p>\n<p>Vous pouvez observer son contenu :<\/p>\n<pre class=\"programlisting\"><span style=\"color: #008000;\">less servwiki.key\r\n-----BEGIN RSA PRIVATE KEY-----\r\nMIICXgIBAAKBgQDQG9wvnuLC4aqzaJCAWGA1AxFzg00hjPObhq1mukzsGyuuWBFG\r\nvj\/k9vFNYX55DHctb\/4cXtsZRWWvgcjtYnCVwRu+DAjFsk\/\/kOMfhplmiv9xQ+ZL\r\n8w\/Xrnm8JWdSS+S4LCMnsuIiQtLbhMrQnUV02hAtbIZiSM3k6OjShEZhDQIDAQAB\r\nAoGAHi0cBW+1k+qjFPbBlUq7UJSMUEKmyYmlvVSPCklTZB0gfVxZzPdDTpEcNks\/\r\nyo+rLFSD9Vsvy\/9LGmLoXruadWlK67PCUnpM5\/oRRGgy8t73YKrxflAU5Gtymjvc\r\nZCf0CAs6wBft3yLU31Qc4WqVM2vTyUH76jebVhxEw8k63OUCQQD\/1OmAXV+TxBPG\r\nZTPFbzUeAE5rQqqOW4aoMNvM61Yn\/19h6SzY2MfSQvF1BNns\/efCRrqOMeyvPWUG\r\ng1okfogTAkEA0D7pDf\/D2Yu5msbOAGF4QBU1erLzpi\/s6Rv6VEPYCGnHQlo3jbg9\r\nFZbjHJ4UcYyYaA8jIrkY+FIJM88YlGbWXwJBAILEdvJ5R\/CFCkKf2j2yIWmLaIol\r\nEn8fw43XI5L0PB7Hxx6KDLVu4XzVYQyahTZBdqR0eMlUNZJBhJE2tO3wi2cCQQCp\r\nJkCFd3es0BrNxqfzlThozRFofcz88za7TldydL0YcFtC4Sb4vWsYizwktZ6jcPEm\r\nrQz8Gl9W7MO+ynwLptB\/AkEA1tsnFXoYzI71enmTdugGxbv0RqAd5iQpDYQkDSdn\r\n2LImp\/3YnXNJ9qpY91j87tKthh\/Oetu6SHlmLg1LOYNIdw==\r\n-----END RSA PRIVATE KEY-----<\/span><\/pre>\n<p><\/p>\n<p>Prot\u00e9gez votre fichier en faisant : <span style=\"color: #008000;\">chmod 400 servwiki.key<\/span><\/p>\n<p>De multiples autres options sont possibles mais il est inutile d&rsquo;alourdir le sujet<\/p>\n<p><strong>A partir de votre cl\u00e9, vous allez maintenant cr\u00e9er un fichier de demande de signature de certificat (CSR<sup>[<a href=\"#la-creation-des-certificats-avec-openssl-pour-web-securise-n-2\" class=\"footnoted\" id=\"to-la-creation-des-certificats-avec-openssl-pour-web-securise-n-2\">2<\/a>]<\/sup>).<\/strong><\/p>\n<p>On g\u00e9n\u00e8re la demande de certificat avec la commande suivante :<\/p>\n<pre class=\"programlisting\"><span style=\"color: #008000;\">openssl req -new -key servwiki.key &gt; servwiki.csr<\/span><\/pre>\n<p><\/p>\n<p>Le syst\u00e8me va vous demander de saisir des champs ; remplissez-les en adaptant sauf le champ \u00ab\u00a0Common Name\u00a0\u00bb qui doit \u00eatre identique au nom d&rsquo;h\u00f4te de votre serveur virtuel :<\/p>\n<pre><span style=\"color: #008000;\">Country Name (2 letter code) [AU]:FR\r\nState or Province Name (full name) [Some-State]:BRETAGNE\r\nLocality Name (eg, city) []:Sulniac\r\nOrganization Name (eg, company) [Internet Widgits Pty Ltd]:Lostihuel Braz\r\nOrganizational Unit Name (eg, section) []:IT\r\nCommon Name (eg, YOUR name) []:www.laurentmarot.fr\r\nEmail Address []:<\/span><\/pre>\n<p>Ce n&rsquo;est pas la peine de saisir d&rsquo;autres <em>extra attributes<\/em>&#8230;<\/p>\n<p>La commande pr\u00e9c\u00e9dente cr\u00e9e le formulaire de demande de certificat (fichier servwiki.csr) \u00e0 partir de la cl\u00e9 priv\u00e9e pr\u00e9alablement g\u00e9n\u00e9r\u00e9e.<\/p>\n<p><strong>Ce fichier dont le contenu est visible ci-dessous contient la cl\u00e9 publique \u00e0 certifier<\/strong>.<\/p>\n<pre class=\"programlisting\"><span style=\"color: #008000;\">less servwiki.csr<\/span><\/pre>\n<pre class=\"programlisting\"><span style=\"color: #008000;\">-----BEGIN CERTIFICATE REQUEST-----\r\nMIIBsTCCARoCAQAwcTELMAkGA1UEBhMCRlIxFTATBgNVBAgTDENvcnNlIGR1IFN1\r\nZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExCMREwDwYDVQQLEwhCVFMg\r\nSU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZvLmZyMIGfMA0GCSqGSIb3DQEBAQUA\r\nA4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12kSbN\/NWP0QUiPlksOkF2NkPfwW\/m\r\nf55dD1hSndlOM\/5kLbSBo5ieE3TgikF0IktjBWm5xSqewM5QDYzXFt031DrPX63F\r\nvo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLWwc0BzEgFZGGw7wiMF6wt5QIDAQAB\r\noAAwDQYJKoZIhvcNAQEEBQADgYEAwwI4UvkfhBvyRrUXtjrLfZXLxZlF9o+URmHJ\r\nysvrLKfesVBEzdA9mqk1OwIwLfe8Fw2fhip2LGqvcCPxDMoIE\/0cDkqGRg9iKp7D\r\nDMuy69lPTEB6UtpVKO\/1eage0oug6VqdfGAYMMSGyWFuO9FE4UE6HspVodb20wGV\r\n4H8qZuk=\r\n-----END CERTIFICATE REQUEST-----<\/span><\/pre>\n<p><\/p>\n<p>Maintenant, deux choix s&rsquo;offrent \u00e0 vous\u00a0:<\/p>\n<div>\n<ul type=\"disc\">\n<li>envoyer le fichier servwiki.csr \u00e0 un organisme (le tiers de confiance ou <strong>l&rsquo;autorit\u00e9 de certification aussi appel\u00e9e AC ou encore CA pour certification authority\u00a0<\/strong>) et ainsi obtenir le certificat d\u00fbment sign\u00e9 par la cl\u00e9 priv\u00e9e de l&rsquo;organisme (apr\u00e8s avoir pay\u00e9),<\/li>\n<li><strong>ou bien signer vous-m\u00eame le certificat. <\/strong>(ce qui dans l&rsquo;absolu est une h\u00e9r\u00e9sie puisque cela revient \u00e0 certifier que nous sommes bien celui que nous pr\u00e9tendons \u00eatre)<\/li>\n<\/ul>\n<\/div>\n<p>Ce dernier choix a notre pr\u00e9f\u00e9rence pour des raison de simplicit\u00e9 &#8230; et de co\u00fbt.<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<div lang=\"fr\">\n<h3>Cr\u00e9ation du certificat de l&rsquo;autorit\u00e9 de certification<\/h3>\n<p>Pour signer un certificat, vous devez cr\u00e9er votre propre autorit\u00e9 de certification, cela implique donc de g\u00e9n\u00e9rer une cl\u00e9 et un certificat auto-sign\u00e9.<\/p>\n<p>La cr\u00e9ation de la cl\u00e9 priv\u00e9e de l&rsquo;autorit\u00e9 de certification se fait comme pr\u00e9c\u00e9demment :<\/p>\n<pre class=\"programlisting\">openssl genrsa -des3 1024 &gt; ca.key<\/pre>\n<p>Ce qui a pour effet de cr\u00e9er la cl\u00e9 priv\u00e9e de l&rsquo;autorit\u00e9 de certification. Dans ce cas, il vaut mieux rajouter l&rsquo;option -des3 qui introduit l&rsquo;usage d&rsquo;une \u00ab\u00a0<em>passphrase<\/em>\u00a0\u00bb <sup>[<a href=\"#la-creation-des-certificats-avec-openssl-pour-web-securise-n-3\" class=\"footnoted\" id=\"to-la-creation-des-certificats-avec-openssl-pour-web-securise-n-3\">3<\/a>]<\/sup> car c&rsquo;est cette cl\u00e9 priv\u00e9e qui signera tous les certificats que l&rsquo;on \u00e9mettra ; cette \u00ab\u00a0<em>passphrase<\/em>\u00a0\u00bb sera donc demand\u00e9e \u00e0 chaque utilisation de la cl\u00e9.<\/p>\n<p>Ensuite, \u00e0 partir de la cl\u00e9\u00a0priv\u00e9e, on cr\u00e9e un certificat x509 auto-sign\u00e9\u00a0pour une dur\u00e9e de validit\u00e9 d&rsquo;un an \u00a0:<\/p>\n<pre class=\"programlisting\">openssl req -new -x509 -days 365 -key ca.key &gt; ca.crt<\/pre>\n<p>Il faut saisir la passphrase&#8230; puisqu&rsquo;on utilise \u00ab\u00a0ca.key\u00a0\u00bb que l&rsquo;on a prot\u00e9g\u00e9. Et on donne les renseignements concernant cette fois-ci l&rsquo;autorit\u00e9 de certification (c&rsquo;est \u00e0 dire nous-m\u00eame).<\/p>\n<p>Attention : le <em>Common Name<\/em> doit \u00eatre diff\u00e9rent de celui qui a \u00e9t\u00e9 donn\u00e9 pour la cl\u00e9.<\/p>\n<pre>Country Name (2 letter code) [AU]:FR\r\nState or Province Name (full name) [Some-State]: BRETAGNE\r\nLocality Name (eg, city) []:SULNIAC\r\nOrganization Name (eg, company) [Internet Widgits Pty Ltd]:Lostihuel Braz\r\nOrganizational Unit Name (eg, section) []:IT\r\nCommon Name (eg, YOUR name) []:myCA\r\nEmail Address []:<\/pre>\n<p>C&rsquo;est notre certificat d&rsquo;autorit\u00e9 de certification qui va permettre de signer les certificats cr\u00e9\u00e9s.<\/p>\n<\/div>\n<div lang=\"en\">\n<h3 style=\"text-align: left;\">La signature du certificat serveur par la CA <sup>[<a href=\"#la-creation-des-certificats-avec-openssl-pour-web-securise-n-4\" class=\"footnoted\" id=\"to-la-creation-des-certificats-avec-openssl-pour-web-securise-n-4\">4<\/a>]<\/sup><\/h3>\n<p>La commande qui signe la demande de certificat est la suivante :<\/p>\n<pre class=\"programlisting\">openssl x509 -req -in servwiki.csr -out servwiki.crt -CA ca.crt -CAkey ca.key\\\r\n-CAcreateserial -CAserial ca.srl<\/pre>\n<p>L&rsquo;option CAcreateserial n&rsquo;est n\u00e9cessaire que la premi\u00e8re fois.<\/p>\n<p>Il faut saisir la passphrase&#8230;<\/p>\n<p>Le certificat sign\u00e9 est le fichier <strong>servwiki.crt<\/strong>. La sortie de la commande attendue est la suivante :<\/p>\n<pre class=\"programlisting\">Signature ok\r\nsubject=\/C=FR\/ST=BRETAGNE\/L=Sulniac\/O=Lostihuel Braz\/OU=IT\/CN=www.laurentmarot.fr\r\nGetting CA Private Key\r\nEnter pass phrase for ca.key:<\/pre>\n<p>Vous avez maintenant un certificat pour votre serveur se nommant servwiki.crt.<\/p>\n<pre class=\"programlisting\">less servwiki.crt<\/pre>\n<pre class=\"programlisting\">-----BEGIN CERTIFICATE-----\r\nMIICVDCCAb0CAQEwDQYJKoZIhvcNAQEEBQAwdDELMAkGA1UEBhMCRlIxFTATBgNV\r\nBAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExC\r\nMREwDwYDVQQLEwhCVFMgSU5GTzEbMBkGA1UEAxMSc2VydmV1ci5idHNpbmZvLmZy\r\nMB4XDTA0MDIwODE2MjQyNloXDTA0MDMwOTE2MjQyNlowcTELMAkGA1UEBhMCRlIx\r\nFTATBgNVBAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UE\r\nChMDTExCMREwDwYDVQQLEwhCVFMgSU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZv\r\nLmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12\r\nkSbN\/NWP0QUiPlksOkF2NkPfwW\/mf55dD1hSndlOM\/5kLbSBo5ieE3TgikF0Iktj\r\nBWm5xSqewM5QDYzXFt031DrPX63Fvo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLW\r\nwc0BzEgFZGGw7wiMF6wt5QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBALD640iwKPMf\r\npqdYtfvmLnA7CiEuao60i\/pzVJE2LIXXXbwYjNAM+7Lov+dFT+b5FcOUGqLymSG3\r\nkSK6OOauBHItgiGI7C87u4EJaHDvGIUxHxQQGsUM0SCIIVGK7Lwm+8e9I2X0G2GP\r\n9t\/rrbdGzXXOCl3up99naL5XAzCIp6r5\r\n-----END CERTIFICATE-----<\/pre>\n<p>Il faut maintenant <strong>installer le certificat de l&rsquo;autorit\u00e9 de certification dans chaque navigateur client<\/strong>. C&rsquo;est ce dernier qui va valider le certificat re\u00e7u par le client lors de la requ\u00eate https:\/\/www.laurentmarot.fr.<\/p>\n<\/div>\n<div lang=\"en\">\n<h3>Installation du certificat d&rsquo;autorit\u00e9 de certification<\/h3>\n<p>Pour installer sur votre navigateur le certificat de l&rsquo;autorit\u00e9 de certification, fichier ca.crt\u00a0:<\/p>\n<div>\n<ul type=\"disc\">\n<li>Gardez le certificat disponible \u00e0 partir du client (disquette, cl\u00e9 usb, ftp, ssh, r\u00e9pertoire partag\u00e9&#8230;)<\/li>\n<li>Sous Windows, un clic droit ou double-clic sur le fichier devrait vous permettre de lancer l&rsquo;assistant d&rsquo;installation du certificat dans Internet Explorer. <strong>Vous devez l&rsquo;installer en tant qu&rsquo;autorit\u00e9 de certification<\/strong>. V\u00e9rifiez ensuite que le certificat s&rsquo;y trouve bien sous le nom de <em>myCA<\/em>.<\/li>\n<li>sur Mozilla :\n<div>\n<ul type=\"circle\">\n<li>Edition\/Pr\u00e9f\u00e9rence\/Confidentialit\u00e9 et S\u00e9curit\u00e9\/Certificats<\/li>\n<li>Bouton de commande : gestion des certificats<\/li>\n<li>Onglet : autorit\u00e9<\/li>\n<li>Bouton de commande : importer<\/li>\n<li>etc&#8230;<\/li>\n<\/ul>\n<\/div>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>Vous pouvez alors passer \u00e0 la configuration d&rsquo;Apache2 pour supporter SSL.<\/p>\n\n<ol class=\"footnotes\">\n\t<li class=\"footnote\" id=\"la-creation-des-certificats-avec-openssl-pour-web-securise-n-1\"><strong><sup>[1]<\/sup><\/strong>fichier servwiki.key<a class=\"note-return\" href=\"#to-la-creation-des-certificats-avec-openssl-pour-web-securise-n-1\">&#x21A9;<\/a><\/li>\n\t<li class=\"footnote\" id=\"la-creation-des-certificats-avec-openssl-pour-web-securise-n-2\"><strong><sup>[2]<\/sup><\/strong>Certificate Signing Request<a class=\"note-return\" href=\"#to-la-creation-des-certificats-avec-openssl-pour-web-securise-n-2\">&#x21A9;<\/a><\/li>\n\t<li class=\"footnote\" id=\"la-creation-des-certificats-avec-openssl-pour-web-securise-n-3\"><strong><sup>[3]<\/sup><\/strong>mot de passe long qui peut m\u00eame contenir des espaces<a class=\"note-return\" href=\"#to-la-creation-des-certificats-avec-openssl-pour-web-securise-n-3\">&#x21A9;<\/a><\/li>\n\t<li class=\"footnote\" id=\"la-creation-des-certificats-avec-openssl-pour-web-securise-n-4\"><strong><sup>[4]<\/sup><\/strong>Certificate Autority<a class=\"note-return\" href=\"#to-la-creation-des-certificats-avec-openssl-pour-web-securise-n-4\">&#x21A9;<\/a><\/li><\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Vous avez entendu parler de Firesheep, l&rsquo;extension pour Firefox qui permet de collecter toutes les mots de passe de votre entourage sur les r\u00e9seaux WIFI ouverts ? Vous n&rsquo;avez pas envie que votre site et ses utilisateurs en soient les prochaines victimes ? Une solution simple : s\u00e9curiser votre site avec SSL\/TLS\/HTTPs. Connectez-vous en tant [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34],"tags":[],"_links":{"self":[{"href":"https:\/\/www.laurentmarot.fr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1223"}],"collection":[{"href":"https:\/\/www.laurentmarot.fr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.laurentmarot.fr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.laurentmarot.fr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.laurentmarot.fr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1223"}],"version-history":[{"count":33,"href":"https:\/\/www.laurentmarot.fr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1223\/revisions"}],"predecessor-version":[{"id":3562,"href":"https:\/\/www.laurentmarot.fr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1223\/revisions\/3562"}],"wp:attachment":[{"href":"https:\/\/www.laurentmarot.fr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.laurentmarot.fr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.laurentmarot.fr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}