Apache Traffic Server

 Apache traffic server est un serveur proxy web utilisé à l’origine chez Yahoo! et par la suite offert à la fondation Apache.

Pour ma part, il me permet de servir de proxy pour des applications Web accessible depuis le web et distribué sur plusieurs serveurs tel que :

  •  Un serveur IIS contenant des applications métiers (extranet),
  • Le CRM de l’entreprise,
  • L’outlook web access d’Exchange,

L’ensemble de ces services deviens accessible depuis l’adresse externe qui pointe sur l’IP de l’entreprise, et chaque partie semble se trouver sur le même serveur (http://monadresse/Appweb, http://monadresse/CRM …).

Il dispose également d’une gestion de cache ce qui en fait un bon serveur CDN ou en tout cas un moyen de décharger vos serveurs web du trafic inutile pour la distribution des fichiers CSS, Image, script JS, etc…

Enfin il est possible de configurer ATS pour prendre en charge votre certificat SSL serveur et ainsi offrir un accès HTTPS à vos sites depuis l’extérieur tout en laissant un accès http en interne, ou plus simplement un seul point de gestion du certificat.

Installation

Il faut télécharger le fichier contenant les sources d’ATS et le compiler sur votre serveur.

Ajout des paquets pour la compilation :

sudo apt-get install g++ libssl-dev tcl-dev libexpat1-dev libpcre3-dev libcap-dev libcap2

Téléchargement des sources (A modifier selon la version) :

wget http://www.apache.org/dyn/closer.cgi/trafficserver/trafficserver-x.x.x.tar.bz2
tar xf trafficserver-x.x.x.tar.bz2
cd trafficserver-x.x.x

Ensuite, la compilation et installation :

./configure
make
sudo make install

Modification de ldconfig :

sudo nano /etc/ld.so.conf

il faut ajouter la ligne suivante :

include /usr/local/libexec/trafficserver

et exécuter la commande :

sudo ldconfig

Pour finir on ajoute le service :

sudo ln -s /usr/local/bin/trafficserver /etc/init.d/trafficserver

Configuration du proxy

La configuration d’ATS se fait principalement dans le fichier « /usr/local/etc/trafficserver/records.config ». Ce fichier est dans un format assez particulier du type « variable type valeur ».

Principale valeur à modifier / vérifier : les ports d’écoutes.

[...]
CONFIG proxy.config.http.server_ports STRING 8080 4443:ssl
[...]

Et pensez à renvoyer les port 80 et 443 de votre passerelle ou box vers l’ip de votre ATS sur les ports 8080 et 4443.

Configuration SSL / HTTPS

J’utilise des certificats de www.startssl.com, qui sont gratuits et offre ainsi le minimum de sécurité. Après avoir obtenu le certificat, je vais dans leur toolbox pour obtenir celui-ci au format PKCS12 (PFX). Il ne reste plus qu’a utiliser ces commandes :

openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
openssl rsa -in key.pem -out cert.key 

Enfin il faut copier les fichiers dans « /etc/trafficserver/ssl » pour qu’ils soient utilisables. Pensez aussi aux fichiers CA.pem et au certificat du niveau de votre certificat.

Configuration des renvois

La configuration des renvoi se fait dans le fichier « /usr/local/etc/trafficserver/remap.config ».

Voici un simple exemple de configuration :

[...]
map  http://mondomaine.fr/webapp/  http://192.168.0.10:80/webappinterne/

Toutes demandes web présentées a ATS pour l’URL « http://mondomaine.fr/webapp/ » sera redirigés sur « http://192.168.0.10:80/webappinterne/ ».

Pour valider vos modifications, utiliser la commande :

sudo /usr/local/bin/traffic_line -x