{"id":176,"date":"2017-06-05T14:36:17","date_gmt":"2017-06-05T13:36:17","guid":{"rendered":"https:\/\/www.riwan.fr\/?page_id=176"},"modified":"2017-07-19T09:33:39","modified_gmt":"2017-07-19T08:33:39","slug":"architecture-web-securisee","status":"publish","type":"page","link":"https:\/\/www.riwan.fr\/index.php\/architecture-web-securisee\/","title":{"rendered":"Architecture web s\u00e9curis\u00e9e"},"content":{"rendered":"<p><strong>Pr\u00e9sentation<\/strong><\/p>\n<p>Une architecture web classique se pr\u00e9sente sous la forme d&rsquo;un serveur web servant du contenu distribu\u00e9 par une base de donn\u00e9es.<\/p>\n<p><strong>Contexte<\/strong><\/p>\n<p>J&rsquo;ai refais int\u00e9gralement l&rsquo;architecture web d&rsquo;un site web en production, en installant un serveur de cache, un reverse-proxy ainsi que l&rsquo;activation d&rsquo;HTTPS via Let&rsquo;s Encrypt.<\/p>\n<p><strong>Projet<\/strong><\/p>\n<p>L&rsquo;architecture web initial : <\/p>\n<p><img src=\"https:\/\/www.riwan.fr\/wp-content\/uploads\/2017\/07\/vm1.png\" alt=\"Archi web\" \/><\/p>\n<p>Il s&rsquo;agit d&rsquo;un serveur web Apache2 ainsi que d&rsquo;un serveur de base de donn\u00e9es MySQL.<\/p>\n<p>Le premier besoin \u00e9tait d&rsquo;ajouter un serveur de cache en amont du serveur web (sur la m\u00eame VM), ceci afin d&rsquo;optimiser le chargement du site web.<\/p>\n<p>Le serveur de cache est Varnish, on l&rsquo;a install\u00e9 en front sur le port 80, il jouait le r\u00f4le de reverse proxy vers Apache qui \u00e9coutait alors sur le port 8080.<\/p>\n<p>La configuration de Varnish est a adapt\u00e9 en fonction du site web\/CMS utilis\u00e9, notamment dans les chemins \u00e0 exclure du cache (backoffice, etc..).<\/p>\n<p>Le second besoin \u00e9tait l&rsquo;activation d&rsquo;HTTPS sur ce m\u00eame site web. La terminaison TLS devrait alors se faire sur le front Varnish, mais celui-ci est incapable de g\u00e9rer du TLS.<\/p>\n<p>J&rsquo;ai donc du mettre en place un reverse proxy (HAProxy) afin qu&rsquo;il puisse jouer le r\u00f4le de terminaison TLS.<\/p>\n<p>Une fois le certificat install\u00e9 sur HAProxy on redirige l&rsquo;ensemble du trafic HTTP vers HTTPS pour limiter le duplicate content :<\/p>\n<p><img src=\"https:\/\/www.riwan.fr\/wp-content\/uploads\/2017\/06\/haproxy1.png\" alt=\"Haproxy img\" \/><\/p>\n<p>Le front HTTPS :<\/p>\n<p><img src=\"https:\/\/www.riwan.fr\/wp-content\/uploads\/2017\/06\/haproxy2.png\" alt=\"Haproxy TLS\" \/><\/p>\n<p>L&rsquo;installation et le renouvellement du certificat HTTPS est g\u00e9r\u00e9 par Let&rsquo;s Encrypt via un serveur standalone. Celui-ci permet de v\u00e9rifier que le domaine est bien redirig\u00e9 vers le bon environnement, via un challenge :<\/p>\n<p><img src=\"https:\/\/www.riwan.fr\/wp-content\/uploads\/2017\/06\/letsencrypt_backend.png\" alt=\"Letsencrypt\" \/><\/p>\n<p>On avait donc HAProxy sur le port 80\/443, Varnish sur le port 8000 et Apache sur le port 8080. Le port 80 et 443 \u00e9tant les seuls ports ouvert au publique sur les pare-feux, le site \u00e9tait bien en HTTPS avec un serveur de cache fonctionnel :<\/p>\n<p><img src=\"https:\/\/www.riwan.fr\/wp-content\/uploads\/2017\/07\/vm2.png\" alt=\"Archi web 2\" \/><\/p>\n<p><strong>Comp\u00e9tences li\u00e9es<\/strong><\/p>\n<p><span style=\"color:#e96656\">Apache<\/span><br \/>\n<span style=\"color:#e96656\">Varnish<\/span><br \/>\n<span style=\"color:#e96656\">HAProxy<\/span><\/p>\n<p><strong><a href=\"https:\/\/www.riwan.fr\/#realisations\">Retour aux r\u00e9alisations<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pr\u00e9sentation Une architecture web classique se pr\u00e9sente sous la forme d&rsquo;un serveur web servant du contenu distribu\u00e9 par une base de donn\u00e9es. Contexte J&rsquo;ai refais int\u00e9gralement l&rsquo;architecture web d&rsquo;un site web en production, en installant un serveur de cache, un reverse-proxy ainsi que l&rsquo;activation d&rsquo;HTTPS via Let&rsquo;s Encrypt. Projet L&rsquo;architecture web initial : Il s&rsquo;agit<a href=\"https:\/\/www.riwan.fr\/index.php\/architecture-web-securisee\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/pages\/176"}],"collection":[{"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/comments?post=176"}],"version-history":[{"count":5,"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/pages\/176\/revisions"}],"predecessor-version":[{"id":220,"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/pages\/176\/revisions\/220"}],"wp:attachment":[{"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/media?parent=176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}