Cacher vos contenus HTTPS avec les proxies Pound et Varnish
Cache et HTTPS ? Si c'est possible !
Cache et communication cryptée par OpenSSL ne font de base pas bon ménage.
A défaut de disposer d'un LoadBalancer gérant le cryptage de la communication au niveau harware, le logiciel Pound permet de profiter d'un proxy cache avec une connexion HTTPS sans activer le mod_ssl sur votre serveur Web Apache.
Cet article vous propose une solution proxy cache + connexion HTTPS sur un serveur Linux Ubuntu.
Présentation du proxy HTTPS Pound
Pound est un reverse proxy qui supporte le protocole crypté HTTPS.
Ses fonctions sont :
- reverse-proxy : il passe les requêtes des internautes à un ou plusieurs backend.
- load balancer : pound distribue les requêtes des navigateurs à des backends choisis, en fonction des informations de sessions
- wrapper SSL : il décrypte les requêtes HTTPS des internautes et les passent en clair en HTTP aux backend
- sanitizer HTTP/HTTPS : il filtre les requêtes mal-formées
- failover : en cas de panne d'un backend, pound cesse de lui envoyer des requêtes jusqu'à ce qu'il redevienne disponible
- request dispatcher : enfin, pound répartit les requêtes entre les backend en fonction des urls.
Pound peut être chrooté et affecté à un user particulier très simplement. Il ne fait aucun accès disque excepté au lancement pour lire le certificat.
Mais pound n'est pas un proxy-cache.
Dans la suite de l'article, je considère que le nom de votre serveur HTTPS est www.xxx.com et que l'adresse de votre proxy-cache est 192.168.0.1. Ces valeurs sont à adapter à vos besoins.
Installation de Pound
En pré-requis, il nous faut créer un certificat SSL.
Dans une console :
# aptitude install pound
Nous voulons que pound reçoive nos requêtes HTTPS, les décrypte et les communiquent au proxy-cache qui s'occupera de cacher ce qui doit être caché.
En ligne de commande :
# cat <<EOF>> /etc/pound/pound.cfg
> ListenHTTPS
> Address www.xxx.com
> Port 443
> Cert "/etc/ssl/server.pem"
>
> ## allow PUT and DELETE also (by default only GET, POST and HEAD)?:
> xHTTP 0
>
> Service
> BackEnd
> Address 192.168.0.1
> Port 80
> End
> End
> End
> EOF
Testez le fichier de configuration :
# pound -c
Démarrez manuellement le service :
# service pound start
Contrôlez que le service HTTPS est opérationnel :
# curl -kI https://www.xxx.com/
HTTP/1.1 200 OK
Server: Apache
Cache-Control: max-age=1
Expires: Sat, 20 Mar 2010 05:02:21 GMT
Vary: Accept-Encoding
Content-Type: text/html
Date: Sat, 20 Mar 2010 05:02:20 GMT
X-Varnish: 1722305028
Age: 0
Via: 1.1 varnish
Connection: keep-alive
Oh, magique ! Le serveur fonctionne, le proxy HTTPS communique bien avec le backend et les headers Varnish m'indique que mon proxy fait correctement sont travail.
Puisque tout va bien, autorisez le lancement du service au démarrage en éditant le fichier /etc/default/pound et en vérifiant la présence de la ligne suivante :
startup=1
That's all folks!
- Ajouter un commentaire
- 6280 lectures

™ 