{"id":1608,"date":"2016-04-06T22:51:33","date_gmt":"2016-04-06T20:51:33","guid":{"rendered":"http:\/\/blog.kodono.info\/wordpress\/?p=1608"},"modified":"2017-01-29T09:45:22","modified_gmt":"2017-01-29T08:45:22","slug":"passer-son-serveur-apache-en-https-avec-lets-encrypt","status":"publish","type":"post","link":"https:\/\/blog.kodono.info\/wordpress\/2016\/04\/06\/passer-son-serveur-apache-en-https-avec-lets-encrypt\/","title":{"rendered":"Passer son serveur Apache en HTTPS avec Let&#8217;s Encrypt"},"content":{"rendered":"<p>Je vais expliquer les diff\u00e9rentes \u00e9tapes pour passer un serveur Apache en HTTPS gr\u00e2ce \u00e0 <a href=\"https:\/\/letsencrypt.org\/\">Let&#8217;s Encrypt<\/a>.<\/p>\n<p>Toutes les op\u00e9rations vont se passer dans une console sur le serveur Linux en mode root. J&#8217;utilise ici une Debian 7.10 \u00ab Wheezy \u00bb.<\/p>\n<p>Je me suis aid\u00e9 de <a href=\"https:\/\/thealphanerd.io\/blog\/securing-apache-and-znc-with-letsencrypt\/\">cet article en anglais<\/a>.<\/p>\n<ol>\n<li>Commencer par nettoyer le contenu de <code>\/etc\/apache2\/sites-available\/<\/code> en supprimant tous les fichiers inutiles<\/li>\n<li>Aller dans <code>\/root<\/code><\/li>\n<li>Installer <strong>git<\/strong> (s&#8217;il n&#8217;est pas d\u00e9j\u00e0 installer) : <code>$ apt-get install git<\/code><\/li>\n<li>Ensuite on tape les commandes suivantes :\n<ul>\n<li><code>$ git clone https:\/\/github.com\/letsencrypt\/letsencrypt<\/code><\/li>\n<li><code>$ cd letsencrypt<\/code><\/li>\n<li><code>$ .\/letsencrypt-auto --help<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Plusieurs programmes vont s&#8217;installer.<\/li>\n<li>Maintenant on tape : <code>$ .\/letsencrypt-auto --apache<\/code><\/li>\n<li>Si vous obtenez l&#8217;erreur <em>Apache plugin support requires libaugeas0 and augeas-lenses version 1.2.0 or higher, please make sure you have you have those installed.<\/em> alors il va falloir utiliser un <a href=\"http:\/\/backports.debian.org\/\">backport debian repositories<\/a> :\n<ul>\n<li>On commence par \u00e9diter le fichier <code>\/etc\/apt\/sources.list<\/code> en y ajoutant la ligne <code>deb http:\/\/ftp.debian.org\/debian wheezy-backports main<\/code><\/li>\n<li>Puis on tape <code>$ apt-get update<\/code><\/li>\n<li>Et ensuite <code>$ apt-get install -t wheezy-backports libaugeas0 augeas-lenses<\/code><\/li>\n<li>On peut maintenant refaire <code>$ .\/letsencrypt-auto --verbose --apache<\/code><\/li>\n<\/ul>\n<li>Une boite de dialogue s&#8217;ouvre vous indiquant les domaines trouv\u00e9s sur votre machine. Par d\u00e9faut ils sont tous coch\u00e9s. Suivez les instructions<\/li>\n<li>Une fois fait, si vous avez l&#8217;erreur <em>urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Failed to connect to host for DVSNI challenge<\/em> il peut y avoir plusieurs raisons&#8230; Pour ma part c&#8217;\u00e9tait le firewall qui bloquait le port 443<\/li>\n<li>Ou si vous avez une erreur li\u00e9e \u00e0 un domaine, assurez-vous que celui-ci pointe bien vers votre box en utilisant la commande <code>nslookup -debug blog.kodono.info 8.8.8.8<\/code><\/li>\n<\/ol>\n<p>Vous devriez maintenant avoir acc\u00e8s \u00e0 votre site web avec <strong>https<\/strong>.<\/p>\n<p><strong>Attention<\/strong> car le certificat Let&#8217;s Encrypt expire apr\u00e8s 90 jours. Il va donc falloir mettre en place un <strong>cron job<\/strong>. On peut prendre celui de <a href=\"https:\/\/thealphanerd.io\/blog\/securing-apache-and-znc-with-letsencrypt\/\">https:\/\/thealphanerd.io\/blog\/securing-apache-and-znc-with-letsencrypt\/<\/a> :<\/p>\n<pre class=\"brush:bash\">\r\n#!\/bin\/sh\r\nif ! \/path\/to\/letsencrypt\/letsencrypt-auto renew > \/var\/log\/letsencrypt\/renew.log 2>&#038;1 ; then\r\n  echo Automated renewal failed:\r\n  cat \/var\/log\/letsencrypt\/renew.log\r\n  exit 1\r\nfi\r\n<\/pre>\n<p>On va le placer dans <code>\/etc\/cron.daily\/update-certs<\/code> (avec les droits <strong>755<\/strong>), et le cron va s&#8217;en occuper tout seul.<\/p>\n<p>Si vous continuez \u00e0 autoriser le HTTP et le HTTPS, alors, pour \u00e9viter le <em>mixed content<\/em> (c&#8217;est-\u00e0-dire du contenu http qui est appel\u00e9 sur votre site https) on peut se la jouer brut-force en utilisant un module d&#8217;Apache qui va modifier le contenu des pages avant de les renvoyer. \u00c0 mon sens cela devrait \u00eatre temporaire, le temps de modifier tous vos fichiers.<\/p>\n<ol>\n<li>On va commencer par installer le module substitude: <code>a2enmod substitute<\/code><\/li>\n<li>Ensuite on utilise le nouveau module pour remplacer les <code>http:\/\/notresite<\/code> en <code>https:\/\/notresite<\/code>, ainsi que les liens ext\u00e9rieurs de <code>http:\/\/<\/code> en <code>\/\/<\/code>. Pour cela on modifie nos fichiers .conf dans <code>\/etc\/apache2\/sites-available\/<\/code> en y ajoutant :<\/li>\n<\/ol>\n<pre class=\"brush:bash\"> &lt;Location \/>\r\n &lt;If \"%{SERVER_PORT} == 443\">\r\n AddOutputFilterByType INFLATE;SUBSTITUTE;DEFLATE text\/html text\/plain text\/xml\r\n Substitute \"s|action=\\\"http:|action=\\\"|\"\r\n Substitute \"s|action='http:|action='|\"\r\n Substitute \"s|src=\\\"http:|src=\\\"|\"\r\n Substitute \"s|src='http:|src='|\"\r\n Substitute \"s|href=\\\"http:|href=\\\"|\"\r\n Substitute \"s|href='http:|href='|\"\r\n &lt;If>\r\n&lt;\/Location>\r\n<\/pre>\n<p>J&#8217;utilise <code>&lt;If \"%{SERVER_PORT} == 443\"><\/code> pour n&#8217;enclencher la substitution que lorsqu&#8217;on demande de l&#8217;HTTPS.<br \/>\nEt on oubliera pas de faire un <code>apache2ctl configtest<\/code> pour v\u00e9rifier que tout est bon, puis un <code>service apache2 reload<\/code> pour prendre en compte les modifications !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je vais expliquer les diff\u00e9rentes \u00e9tapes pour passer un serveur Apache en HTTPS gr\u00e2ce \u00e0 Let&#8217;s Encrypt. Toutes les op\u00e9rations vont se passer dans une console sur le serveur Linux en mode root. J&#8217;utilise ici une Debian 7.10 \u00ab Wheezy \u00bb. Je me suis aid\u00e9 de cet article en anglais. Commencer par nettoyer le contenu [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","hide_page_title":"","footnotes":""},"categories":[53,20,9],"tags":[161,155,149],"class_list":["post-1608","post","type-post","status-publish","format-standard","hentry","category-linux","category-niveau-expert","category-securite","tag-linux","tag-niveau-expert","tag-securite"],"_links":{"self":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/comments?post=1608"}],"version-history":[{"count":18,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1608\/revisions"}],"predecessor-version":[{"id":1758,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1608\/revisions\/1758"}],"wp:attachment":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/media?parent=1608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/categories?post=1608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/tags?post=1608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}