Transcript
Page 1: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

ISBN

: 978

-2-7

460-

8633

-3

39 €

Apa

che

Tom

cat 8

G

uide

d’a

dmin

istr

atio

n du

ser

veur

Jav

a EE

7

Apache Tomcat 8 Guide d’administration du serveur Java EE 7 sous Windows et Linux

Etienne LANGLET est forma-teur, consultant et développeur sur les technologies Java/Java EE mais également spécialiste des produits Open Source. Dans ce contexte, il a eu l’occasion de mettre en œuvre des ser-veurs Tomcat en environnement d’entreprise et propose ainsi au lecteur un ouvrage réellement opérationnel sur le sujet.

Ce livre sur Apache Tomcat 8 s’adresse à toute personne appelée à mettre en œuvre ce serveur d’applications sous Windows ou Linux, que ce soit pour des besoins de test, de développement, ou des besoins de production dans un environ-nement d’entreprise. Les premiers chapitres permettent de faire quelques rappels essentiels sur les technologies Internet et Java/Java EE, massivement utilisées par Tomcat. Les chapitres suivants se concentrent sur les aspects fonda-mentaux de l’administration d’un serveur d’application tels que l’installation, en tenant compte des contraintes d’entre-prise, la gestion des applications ou encore la configuration de Tomcat 8.Enfin les derniers chapitres traitent des sujets plus avancés que sont la sécurité, la supervision du serveur et l’optimisation des performances, la mise en cluster de serveurs, pour conclure sur l’utilisation de Tomcat 8 lors des phases de développement d’applications.Avec un tel livre, le lecteur possède toutes les clés pour mettre en place une véritable infrastructure d’entreprise sécurisée et performante. Si le lecteur est familier d’une version précédente de Tomcat, il pourra approfondir ses connaissances en trouvant dans ces pages une information précise pour une mise en application immédiate.

Avant-propos • Préambule • La plate-forme Java EE • Installa-tion et configuration • Administration du serveur • Déploiement et gestion des applications • La sécurité du serveur et des appli-cations • Analyse et supervision • Clustering et supervision • Utiliser Tomcat pour le développement • Installation et confi-guration de MySQL • Installation et configuration d’OpenLDAP

Les chapitres du livrePour plus d’informations :

Apache Tomcat 8 Guide d’administration du serveur Java EE 7 sous Windows et Linux

Etienne LANGLET

Page 2: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

1Table des matières

Avant-propos

1. À qui s’adresse ce livre ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2. Les pré-requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Chapitre 1Préambule

1. Rappel sur les architectures Internet/Intranet/Extranet . . . . . . . . . . 131.1 Le protocole HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.1.1 Les méthodes HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.1.2 Les codes d’état HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.1.3 Les en-têtes HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.1.4 Gestion des sessions utilisateurs : les cookies HTTP . . . 20

1.2 Les serveurs Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.3 Les technologies côté client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.4 Les technologies côté serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.5 Les architectures n/tiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2. Apache Tomcat et Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.1 La fondation Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.2 Java chez Apache : le projet Jakarta . . . . . . . . . . . . . . . . . . . . . . 272.3 Les évolutions de Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.4 La plate-forme Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.4.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.4.2 Java aujourd’hui. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.4.3 Java et Tomcat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Page 3: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

2Guide d’administration du serveur Java EE 7

Apache Tomcat 8

Chapitre 2La plate-forme Java EE

1. La plate-forme Java Enterprise Edition (Java EE) . . . . . . . . . . . . . . . . 351.1 Le Java Community Process (JCP). . . . . . . . . . . . . . . . . . . . . . . . 361.2 Une forte dépendance : les annotations . . . . . . . . . . . . . . . . . . . 37

2. Les composants Java EE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.1 Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.2 JavaServer Pages : JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402.3 Enterprise JavaBeans : EJB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.4 Les entités Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.5 La technologie Web Socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3. La plate-forme de service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.1 JDBC : Java DataBase Connectivity . . . . . . . . . . . . . . . . . . . . . . 453.2 JNDI : Java Naming & Directory Interface . . . . . . . . . . . . . . . . 453.3 JMS : Java Message Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.4 JavaMail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.5 JTA : Java Transaction API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.6 RMI/IIOP : Remote Method Invocation/

Internet InterORB Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.7 JCA : Java EE Connector Architecture . . . . . . . . . . . . . . . . . . . . 473.8 JAAS : Java Authentication and Authorization Service. . . . . . . 473.9 XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4. Les applications Java EE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.1 Le modèle de développement MVC . . . . . . . . . . . . . . . . . . . . . . 494.2 Les différents modules Java EE . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.2.1 Modules Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.2.2 Modules EJB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.2.3 Modules clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.2.4 Modules de connecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.3 Structure et packaging des applications . . . . . . . . . . . . . . . . . . . 52

Page 4: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

3Table des matières

5. Les applications Web Java EE et Tomcat . . . . . . . . . . . . . . . . . . . . . . 545.1 Structure et arborescence d’une application Web . . . . . . . . . . . 545.2 Le descripteur de déploiement : web.xml . . . . . . . . . . . . . . . . . . 565.3 Les sessions HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

6. Les serveurs d’applications Java EE . . . . . . . . . . . . . . . . . . . . . . . . . . . 626.1 Rôles d’un serveur d’applications . . . . . . . . . . . . . . . . . . . . . . . . 626.2 Architecture d’un serveur d’applications . . . . . . . . . . . . . . . . . . 636.3 Les produits du marché . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656.4 Le cas Apache Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

Chapitre 3Installation et configuration

1. Les différentes versions de Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

2. Distribution de Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

3. Installation de la plate-forme Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . 693.1 Quelle version choisir ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693.2 Installation et configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

3.2.1 Sous Microsoft Windows . . . . . . . . . . . . . . . . . . . . . . . . . 693.2.2 Sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

4. Installation du serveur Tomcat 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.1 Sous Microsoft Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

4.1.1 Installation à partir du package Windows. . . . . . . . . . . . 774.1.2 Installation à partir de l’archive ZIP. . . . . . . . . . . . . . . . . 784.1.3 Création d’un service Windows pour Tomcat 8 . . . . . . . 79

4.2 Sous Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.2.1 Installation à partir des paquets RPM . . . . . . . . . . . . . . . 804.2.2 Installation à partir d’une archive . . . . . . . . . . . . . . . . . . 824.2.3 Démarrer Tomcat 8 à l’amorçage du système . . . . . . . . . 82

Page 5: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

4Guide d’administration du serveur Java EE 7

Apache Tomcat 8

5. Coupler Tomcat avec un serveur Web . . . . . . . . . . . . . . . . . . . . . . . . 845.1 Pourquoi utiliser un serveur Web frontal ? . . . . . . . . . . . . . . . . . 845.2 Les différents connecteurs pour l’intégration

avec un serveur Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.2.1 Le protocole AJP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.2.2 Les modules AJP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

5.3 Utiliser le serveur Web Apache . . . . . . . . . . . . . . . . . . . . . . . . . . 865.3.1 Configurer Tomcat et Apache avec un module AJP . . . . 875.3.2 Installer et configurer Apache. . . . . . . . . . . . . . . . . . . . . . 875.3.3 Installer et configurer Tomcat 8. . . . . . . . . . . . . . . . . . . . 905.3.4 Le module mod_jk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915.3.5 Les modules mod_proxy et mod_proxy_ajp . . . . . . . . . 103

5.4 Utiliser le serveur Web Microsoft IIS . . . . . . . . . . . . . . . . . . . . 1045.4.1 Configurer Tomcat et IIS avec le redirecteur JK . . . . . . 1045.4.2 Configurer Tomcat 8 pour le redirecteur JK . . . . . . . . . 1045.4.3 Installer et configurer le redirecteur JK . . . . . . . . . . . . . 105

5.5 Configurer les serveurs Web pour servir les ressources statiques . . . . . . . . . . . . . . . . . . . . . . 112

Chapitre 4Administration du serveur

1. Architecture du serveur Tomcat 8. . . . . . . . . . . . . . . . . . . . . . . . . . . 1171.1 Les différents composants de Tomcat 8 . . . . . . . . . . . . . . . . . . 1171.2 Arborescence de l’installation . . . . . . . . . . . . . . . . . . . . . . . . . . 119

2. Le fichier server.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212.1 Les éléments de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . 121

2.1.1 L’élément <Server> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232.1.2 L’élément <Service> . . . . . . . . . . . . . . . . . . . . . . . . . . . 1232.1.3 L’élément <Executor> . . . . . . . . . . . . . . . . . . . . . . . . . . 1242.1.4 L’élément <Connector> . . . . . . . . . . . . . . . . . . . . . . . . 1252.1.5 L’élément <Engine>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272.1.6 L’élément <Host> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Page 6: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

5Table des matières

2.1.7 L’élément <Context> . . . . . . . . . . . . . . . . . . . . . . . . . . 1312.1.8 L’élément <Realm> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1332.1.9 L’élément <Loader> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1352.1.10 L’élément <Manager> . . . . . . . . . . . . . . . . . . . . . . . . . . 1362.1.11 L’élément <JarScanner> . . . . . . . . . . . . . . . . . . . . . . . . 1382.1.12 L’élément <Resources> . . . . . . . . . . . . . . . . . . . . . . . . . 1402.1.13 L’élément <Valve>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1402.1.14 L’élément <Listener>. . . . . . . . . . . . . . . . . . . . . . . . . . . 151

3. Les autres fichiers de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . 1523.1 Le fichier web.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

3.1.1 Configuration de filtres . . . . . . . . . . . . . . . . . . . . . . . . . . 1563.1.2 Les filtres Tomcat 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

3.2 Le fichier tomcat-users.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1623.3 Le fichier catalina.policy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

4. Configuration des ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1634.1 Visibilité et portée des ressources . . . . . . . . . . . . . . . . . . . . . . . 1654.2 Pools de connexions et DataSource JDBC . . . . . . . . . . . . . . . . 167

4.2.1 La connectivité aux bases de données . . . . . . . . . . . . . . 1674.2.2 Le pooling de connexions JDBC . . . . . . . . . . . . . . . . . . . 1694.2.3 Configuration d’un pool

de connexions JDBC avec Tomcat 8 . . . . . . . . . . . . . . . 1704.2.4 Mise en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

4.3 Sessions JavaMail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1754.4 JavaBeans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1774.5 Entrées d’environnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Page 7: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

6Guide d’administration du serveur Java EE 7

Apache Tomcat 8

Chapitre 5Déploiement et gestion des applications

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

2. Déployer une application dans Tomcat 8 . . . . . . . . . . . . . . . . . . . . . 1832.1 Déploiement automatique d’applications. . . . . . . . . . . . . . . . . 1842.2 Utiliser le répertoire webapps/ . . . . . . . . . . . . . . . . . . . . . . . . . 1842.3 L’élément <Context> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1852.4 Déploiement avec XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

3. Les ressources des applications Web . . . . . . . . . . . . . . . . . . . . . . . . . 1873.1 Introduction et concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1873.2 Les éléments de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . 1883.3 Mise en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

4. L’application manager de Tomcat 8 . . . . . . . . . . . . . . . . . . . . . . . . . 1904.1 L’interface texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

4.1.1 Installer une application sous Tomcat 8 . . . . . . . . . . . . 1934.1.2 Mettre à jour une application. . . . . . . . . . . . . . . . . . . . . 1954.1.3 Démarrer et arrêter une application. . . . . . . . . . . . . . . . 1954.1.4 Recharger une application. . . . . . . . . . . . . . . . . . . . . . . . 1964.1.5 Supprimer une application . . . . . . . . . . . . . . . . . . . . . . . 1974.1.6 Obtenir des informations . . . . . . . . . . . . . . . . . . . . . . . . 1974.1.7 Les messages d’erreur du manager . . . . . . . . . . . . . . . . . 200

4.2 L’interface HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2014.2.1 Déployer des applications localement . . . . . . . . . . . . . . 2024.2.2 Déployer des applications à distance . . . . . . . . . . . . . . . 203

4.3 L’interface ANT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

5. Le Deployer de Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2075.1 Automatiser le déploiement des applications. . . . . . . . . . . . . . 208

Page 8: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

7Table des matières

Chapitre 6La sécurité du serveur et des applications

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

2. Authentification, autorisation et cryptage : le modèle de sécurité Java EE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2112.1 Authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2122.2 Autorisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2142.3 Cryptage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2152.4 La sécurité des applications Web Java EE . . . . . . . . . . . . . . . . . 217

3. Les Realms de Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2223.1 User Database Realm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2243.2 JDBC Realm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2273.3 DataSource Realm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353.4 JNDI Realm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373.5 JAAS Realm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2423.6 Combined Realm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2453.7 LockOut Realm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

4. Configuration de Tomcat pour le Single Sign-On . . . . . . . . . . . . . . 2464.1 La Valve d’authentification unique . . . . . . . . . . . . . . . . . . . . . . 246

5. Sécurisation avec SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475.1 Génération des certificats et clés de cryptage . . . . . . . . . . . . . . 2485.2 Configuration du connecteur HTTPS. . . . . . . . . . . . . . . . . . . . 2515.3 Utiliser le serveur Web Apache

comme serveur frontal HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . 253

6. Restrictions d’accès. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2546.1 Restriction par adresse IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556.2 Restriction par nom de machine . . . . . . . . . . . . . . . . . . . . . . . . 256

7. Le gestionnaire de sécurité : utiliser Tomcat en mode sécurisé . . . . 2567.1 Lancer Tomcat en mode sécurisé. . . . . . . . . . . . . . . . . . . . . . . . 2597.2 Configuration du gestionnaire de sécurité pour Tomcat. . . . . 259

Page 9: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

8Guide d’administration du serveur Java EE 7

Apache Tomcat 8

8. Autres considérations de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . 2618.1 Exécuter Tomcat 8 avec un compte sans privilèges . . . . . . . . . 262

8.1.1 Configuration sous Windows. . . . . . . . . . . . . . . . . . . . . 2628.1.2 Configuration sous Linux . . . . . . . . . . . . . . . . . . . . . . . . 264

Chapitre 7Analyse et supervision

1. Les fichiers journaux de Tomcat 8 . . . . . . . . . . . . . . . . . . . . . . . . . . 2671.1 Configuration des journaux de Tomcat 8. . . . . . . . . . . . . . . . . 267

1.1.1 Le système de journalisation de Tomcat 8. . . . . . . . . . . 2671.1.2 Structure du fichier logging.properties . . . . . . . . . . . . . 2681.1.3 Le fichier logging.properties par défaut . . . . . . . . . . . . . 272

1.2 Configuration des journaux avec Log4J . . . . . . . . . . . . . . . . . . 2731.2.1 Le système de journalisation Log4J . . . . . . . . . . . . . . . . 2731.2.2 Utiliser Log4J avec Tomcat. . . . . . . . . . . . . . . . . . . . . . . 273

2. Tester la montée en charge du serveur . . . . . . . . . . . . . . . . . . . . . . . 2762.1 Apache JMeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

2.1.1 Écrire des plans de test Web avec JMeter. . . . . . . . . . . . 2782.1.2 Plans de test avancés : les composants de JMeter . . . . . 2832.1.3 Stratégie de conception des tests :

un exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2902.2 Optimisation et reconfiguration de Tomcat . . . . . . . . . . . . . . 292

2.2.1 Les paramètres d’optimisation de Tomcat 8 . . . . . . . . . 2922.2.2 La machine virtuelle Java . . . . . . . . . . . . . . . . . . . . . . . . 297

3. Utiliser l’interface JMX de Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . 2993.1 Qu’est-ce que JMX ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2993.2 JMX et Tomcat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3003.3 Utiliser un client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

3.3.1 Configurer la machine virtuelle de Tomcat 8 . . . . . . . . 3043.3.2 Configurer Tomcat 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3063.3.3 Lancement de JConsole. . . . . . . . . . . . . . . . . . . . . . . . . . 307

Page 10: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

9Table des matières

Chapitre 8Clustering avec Tomcat 8

1. Introduction au clustering avec Tomcat 8 . . . . . . . . . . . . . . . . . . . . 309

2. Une solution de haute disponibilité avec Tomcat 8. . . . . . . . . . . . . 3102.1 Une infrastructure disponible et performante . . . . . . . . . . . . . 310

3. Configuration d’un cluster Tomcat 8 . . . . . . . . . . . . . . . . . . . . . . . . 3113.1 Installer plusieurs instances de Tomcat 8

sur la même machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3113.2 Répartition de charge avec les modules AJP . . . . . . . . . . . . . . . 314

3.2.1 Configuration avec Apache HTTP Server et mod jk. . . 3153.2.2 Configuration avec Apache HTTP Server et

mod_proxy_ajp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3193.2.3 Configuration avec Microsoft IIS. . . . . . . . . . . . . . . . . . 319

3.3 Configuration d’un cluster Tomcat 8 en mode maître/esclave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

4. Maintenir l’état des clients dans un cluster . . . . . . . . . . . . . . . . . . . 3214.1 La problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3214.2 Les solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

4.2.1 La réplication de mémoire à mémoire . . . . . . . . . . . . . . 3244.2.2 Les sessions persistantes sur système de fichiers . . . . . . 3314.2.3 Les sessions persistantes en base de données. . . . . . . . . 334

5. Déploiement d’applications dans un cluster Tomcat 8 . . . . . . . . . . 3375.1 Configuration du deployer en cluster . . . . . . . . . . . . . . . . . . . . 3375.2 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

Chapitre 9Utiliser Tomcat pour le développement

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

2. Développer avec Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3402.1 Les perspectives et les vues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3412.2 Les plug-ins d’Eclipse pour Tomcat. . . . . . . . . . . . . . . . . . . . . . 342

Page 11: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

10Guide d’administration du serveur Java EE 7

Apache Tomcat 8

3. Développer avec NetBeans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3513.1 Configuration d’un serveur Tomcat 8 . . . . . . . . . . . . . . . . . . . 352

4. Apache ANT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3554.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3554.2 Construction d’un projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3584.3 Générer les archives de déploiement . . . . . . . . . . . . . . . . . . . . . 3604.4 Déployer sur le serveur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

5. Intégration de librairies tierces-parties . . . . . . . . . . . . . . . . . . . . . . . 3635.1 Exemples avec Struts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3635.2 Exemple avec Hibernate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3645.3 Pour conclure... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

Annexe AInstallation et configuration de MySQL

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

2. Téléchargement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

3. Installation sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

4. Installation sous Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

Annexe BInstallation et configuration d'OpenLDAP

1. Installation sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

2. Installation sous Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

3. Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378

4. Installation de JXplorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

5. Importation d’un fichier LDIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

Page 12: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

211

Chapitre 6

La sécurité du serveuret des applications

La sécurité du serveur et des applications1. Introduction

La sécurité informatique est un très vaste sujet qu’il est, aujourd’hui, impos-sible de ne pas traiter dans un ouvrage comme celui-ci. L’objectif de ce chapitreest de présenter les différents moyens utilisables pour sécuriser un serveurTomcat mais également les applications qu’il héberge et pour garantir unaccès fiable à ses services.

2. Authentification, autorisation et cryptage : le modèle de sécurité Java EE

L’authentification est le procédé qui permet de déterminer et de valider l’iden-tité d’un client d’une application. Les technologies Java EE, et plus particuliè-rement la spécification Servlet, proposent un mécanisme pour gérer cetteauthentification, et ce, de manière standard entre les serveurs d’applicationset les conteneurs Web, grâce à l’API JAAS.

Page 13: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

© E

dit

ions

EN

I -

All r

ights

rese

rved

212Guide d’administration du serveur Java EE 7

Apache Tomcat 8

Cependant, il est tout à fait possible que les concepteurs et développeurs d’uneapplication implémentent leur propre mécanisme pour l’authentification,cependant en cas de modification du registre contenant les données d’authen-tification, l’application doit s'adapter, JAAS permet de s’affranchir de cettecontrainte : c’est le serveur d’applications qui fait l’interface avec le registreutilisateur.

2.1 Authentification

Un conteneur Web comme Tomcat possédant un moteur HTTP peut tout àfait utiliser les mécanismes d’authentification habituellement mis en œuvrepar les serveurs Web : ce sont les mécanismes d’authentification HTTP ouschémas d’authentification HTTP. Le principe est le suivant : lorsqu’un clienttente d’accéder à une ressource protégée d’un site ou d’une application Web,le serveur renvoie le code d’état HTTP 401 au navigateur, indiquant à celui-cique la ressource demandée est protégée et que son accès est soumis à authen-tification. En réaction à ce code 401, le navigateur affiche une boîte de dialo-gue de saisie d’informations d’identification au client : si l’authentificationaboutit, la ressource est envoyée dans la réponse, sinon c’est le code d’état 403(Forbidden) associé à une page d’erreur qui est envoyé.

Pour implémenter ce mécanisme il faut utiliser un des trois schémas d’authen-tification HTTP :

– L’authentification de base (BASIC).

– L’authentification codée (DIGEST).

– L’authentification par certificat client (CLIENT-CERT).

L’authentification de base (Basic Auth) est, comme son nom l’indique, leschéma d’authentification le plus simple. Lorsque le client valide les informa-tions d’identification saisies dans la boîte de dialogue que lui présente le navi-gateur, ces informations sont transmises simplement en étant encodées avecl’algorithme Base64. Cet algorithme est connu et il est très facile de récupérerles données en clair. Une fois que le client est authentifié, le navigateurconserve les informations d’authentification en cache et il n’y pas d’autremoyen que de fermer le navigateur pour déconnecter le client.

Page 14: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

213La sécurité du serveur et des applicationsChapitre 6

L’authentification codée (Digest Auth) offre les mêmes fonctionnalités quel’authentification de base, mais les informations d’authentification sont cryp-tées grâce à un mécanisme appelé hachage (en anglais, digest). Le principe estque l’élément qui a été crypté par hachage n’est pas décryptable : le hachageest irréversible.

Le processus d’authentification codée se déroule de la manière suivante :

– Le serveur envoie la demande d’authentification au navigateur client, aveccette demande, il transmet une chaîne de caractères qui sera utilisée par leprocessus de hachage.

– Le navigateur ajoute cette chaîne au mot de passe du client et fait lecryptage avec un algorithme de hachage, tel que SHA ou MD5.

– Le résultat du hachage est envoyé au serveur.

– Le serveur récupère le nom d'utilisateur et le mot de passe en clair à partirdu registre d'authentification. Le serveur utilise ensuite la chaîne de hachagetransmise au client pour faire le hachage.

– L’authentification aboutit uniquement si les deux valeurs de hachage, celletransmise par le client, et celle générée par le serveur sont strictement iden-tiques.

À noter que ce mécanisme ne réalise le cryptage que pour l’authentification,les données qui transitent ensuite ne sont pas cryptées.

Enfin, l’authentification par certificat client (Client-Cert Auth) utilise lescertificats HTTPS pour garantir au client l’identité d’un serveur si le certificatest signé par un organisme digne de confiance appelé autorité de certification(des sociétés telles que VeriSign par exemple). Le serveur envoie sa clé pu-blique au client par un moyen ou par un autre, le client installe le certificatdans le navigateur, ensuite, les requêtes de ce client sont cryptées grâce à la clépublique du serveur, et sont décryptables uniquement par le serveur grâce à saclé privée. Les données étant transmises en utilisant le protocole HTTPS, c’estle schéma d’authentification le plus sécurisé.

Page 15: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

© E

dit

ions

EN

I -

All r

ights

rese

rved

214Guide d’administration du serveur Java EE 7

Apache Tomcat 8

Malheureusement, aujourd’hui, tous ces mécanismes d’authentification nesont pas supportés par tous les navigateurs Web. Dans le cas de la mise enœuvre de la sécurité dans un contexte intranet, l’infrastructure matérielle etlogicielle est maîtrisée : les postes de travail utilisateur peuvent être mis à jourpour supporter un schéma d’authentification plutôt qu’un autre, or c’estdifficilement envisageable dans un contexte Internet…

Aussi, dans la majorité des cas d’utilisation actuels, le schéma utilisé estl’authentification de base, mais les données ne sont pas véhiculées en HTTPmais en HTTPS pour crypter les flux échangés.

Un autre mécanisme d’authentification existe dans les spécifications servlet,il s’agit de l’authentification par formulaire (Form-based Auth). Dans ce cas,le navigateur n’intervient pas pour fournir un moyen à l’utilisateur de s’iden-tifier, mais un formulaire HTML est utilisé par le serveur, il est présenté auclient à partir du moment où celui-ci tente d’accéder à des données protégées.

Lorsque le formulaire est rempli et validé, les données d’authentification del’utilisateur sont transmises à une servlet système du serveur d’applications,qui transmet ces données au serveur pour l’authentification dans le registreutilisateur. Ce mécanisme est très utilisé car il possède de nombreux avan-tages. D’abord le fait d’utiliser un formulaire HTML permet de personnaliserl’interface d’authentification, les données sont également facilement trans-missibles en HTTPS, de ce fait, la sécurité repose à la fois sur une authentifi-cation par nom d’utilisateur et mot de passe, et sur le cryptage des donnéestransmises. Un autre avantage est qu’il utilise les sessions HTTP et qu’il estpar conséquent très facile de déconnecter un client.

2.2 Autorisation

Le modèle de sécurité des applications Java EE utilise la notion d’utilisateur etde rôle pour gérer les autorisations d’accès. Le serveur d’applications qui gèrele mécanisme est lié au registre utilisateur qui contient les comptes utilisa-teurs, les rôles, ainsi que les associations entre ces comptes d’utilisateurs et lesrôles auxquels ces utilisateurs peuvent prétendre.

Page 16: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

215La sécurité du serveur et des applicationsChapitre 6

Une application peut déclarer un ensemble de ressources protégées et unique-ment accessibles aux utilisateurs disposant d’un rôle particulier. Un utilisa-teur obtient un rôle pendant son authentification : une fois son identitévérifiée, le serveur d’applications ou le conteneur Web demande au registreutilisateur la liste des rôles pour cet utilisateur, ces rôles sont présentés pourl’accès à la ressource, et s’il y a correspondance, la ressource concernée estautorisée à l’utilisateur.

L’application déclare un ou plusieurs rôles pour restreindre les accès, l’associa-tion entre les rôles déclarés dans l’application et les utilisateurs stockés dansle registre d’authentification se fait en général au moment du déploiement del’application. L’administrateur a également la possibilité de revenir sur cetteassociation ultérieurement.

Cette séparation permet d’utiliser des registres d’authentification différentssimplement par configuration du serveur d’applications, sans impact sur lecode des applications.

2.3 Cryptage

Le cryptage des données entre un client et un serveur Web se fait en utilisantune variante du protocole HTTP qui transite dans un canal sécurisé grâce à unprotocole réseau qui crypte les données.

SSL (Secure Socket Layer) est un protocole qui permet de transmettre desdonnées de manière sécurisée entre un client et un serveur. Développé par lasociété Netscape Inc., SSL a été très rapidement adopté en tant que protocolestandard de l’Internet.

Le protocole SSL repose sur deux mécanismes de sécurité, le cryptage à clépublique et le cryptage à clé symétrique.

Le cryptage à clé publique fait intervenir une paire de clé, la clé publique, quiest librement diffusée et disponible, et la clé privée qui est soigneusementconservée par son propriétaire. Tout ce qui est crypté avec la clé privée n’estdécryptable qu’avec la clé publique, et inversement, tout ce qui est crypté avecla clé publique n’est décryptable qu’avec la clé privée.

Page 17: Apache Tomcat 8 Apache - fnac-static.com · 2014-06-05 · Apache Tomcat 8 Guide d’administration du serveur Java EE 7 Apache Tomcat 8 Guide d’administration du serveur Java EE

© E

dit

ions

EN

I -

All r

ights

rese

rved

216Guide d’administration du serveur Java EE 7

Apache Tomcat 8

Le cryptage à clé symétrique utilise le même mécanisme pour le cryptage et ledécryptage des données. Cependant, il ajoute également un procédé permet-tant à un client de récupérer la clé publique du serveur en toute sécurité.

En effet, un pirate pourrait tout à fait se faire passer pour le serveur auquel leclient souhaite se connecter, envoyer la clé publique au client, et récupérer desinformations sensible sur ce dernier. Le mécanisme de cryptage par clé publiquene permet pas au client de s’assurer qu’il dialogue bien avec le bon serveur.

Dans le cryptage symétrique, les étapes d’échange de la clé publique entre leserveur et le client sont les suivantes :

– Le serveur commence par envoyer un certificat au client qui fait la demandede communication, ce certificat contient la clé publique du serveur, l’émet-teur du certificat, et la durée de validité du certificat.

– Le client doit ensuite accepter le certificat en fonction de son authenticité.Un certificat peut être considéré authentique à partir du moment où il estdélivré par un organisme digne de confiance appelé autorité de certification(CA - Certificate Authorities), comme les sociétés VeriSign ou encoreThawte. Si le certificat n’est pas valide, le client en est averti, libre à lui decontinuer ou d’arrêter le dialogue, à ses risques et périls.

– À ce stade, les échanges entre le client et le serveur sont maintenant sécuri-sés par le mécanisme de cryptage à clé publique. La configuration du serveurpeut, ou non, demander une authentification au client : les donnéesd’authentification qui transitent sont cryptées.

Le protocole HTTPS (HTTP over SSL) est une implémentation de HTTP surle protocole SSL. Une autre implémentation de protocole sécurisé a égalementvu le jour, il s’agit de TLS (Transport Layer Security). C’est la version standar-disée de SSL par l’IETF (Internet Engineering Task Force), l’organisation la plusimportante en matière de standardisation des protocoles de l’Internet. TLSs’appuie sur la version 3.0 de SSL. En général, les serveurs d’applicationsJava EE peuvent utiliser SSL ou TLS pour sécuriser les flux HTTP.


Top Related