Architecture web sécurisée

Présentation

Une architecture web classique se présente sous la forme d’un serveur web servant du contenu distribué par une base de données.

Contexte

J’ai refais intégralement l’architecture web d’un site web en production, en installant un serveur de cache, un reverse-proxy ainsi que l’activation d’HTTPS via Let’s Encrypt.

Projet

L’architecture web initial :

Archi web

Il s’agit d’un serveur web Apache2 ainsi que d’un serveur de base de données MySQL.

Le premier besoin était d’ajouter un serveur de cache en amont du serveur web (sur la même VM), ceci afin d’optimiser le chargement du site web.

Le serveur de cache est Varnish, on l’a installé en front sur le port 80, il jouait le rôle de reverse proxy vers Apache qui écoutait alors sur le port 8080.

La configuration de Varnish est a adapté en fonction du site web/CMS utilisé, notamment dans les chemins à exclure du cache (backoffice, etc..).

Le second besoin était l’activation d’HTTPS sur ce même site web. La terminaison TLS devrait alors se faire sur le front Varnish, mais celui-ci est incapable de gérer du TLS.

J’ai donc du mettre en place un reverse proxy (HAProxy) afin qu’il puisse jouer le rôle de terminaison TLS.

Une fois le certificat installé sur HAProxy on redirige l’ensemble du trafic HTTP vers HTTPS pour limiter le duplicate content :

Haproxy img

Le front HTTPS :

Haproxy TLS

L’installation et le renouvellement du certificat HTTPS est géré par Let’s Encrypt via un serveur standalone. Celui-ci permet de vérifier que le domaine est bien redirigé vers le bon environnement, via un challenge :

Letsencrypt

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 étant les seuls ports ouvert au publique sur les pare-feux, le site était bien en HTTPS avec un serveur de cache fonctionnel :

Archi web 2

Compétences liées

Apache
Varnish
HAProxy

Retour aux réalisations