Modifié par jhurst le 2021/04/21 10:01

Afficher les derniers auteurs
1 {{ddtoc/}}
2
3 ----
4
5 = Connecteur Apache HTTPD / Tomcat : AJP =
6
7 == {{id name="prérequis"/}}Prérequis ==
8
9 * Avoir apache httpd installé
10 * Avoir les modules **proxy** et **proxy_ajp** activés
11
12 == {{id name="module"/}}Ajout d'un module dans apache httpd ==
13
14 === {{id name="windows"/}}Windows ===
15
16 1. Vérifiez que le fichier correspondant au module est présent dans le dossier **<install_apache>/modules**. Par exemple pour le module proxy_ajp : fichier mod_proxy_ajp.so. Si ce n’est pas le cas, trouvez une version d’apache httpd contenant ce fichier.
17 1. Activez le module dans le fichier **<install_apache>/conf/httpd.conf** avec :
18 LoadModule nom_du_module modules/fichier_du_module
19 Exemple : LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
20
21 === {{id name="linux"/}}Linux ===
22
23 Utilisez la commande : a2enmod nom_du_module
24 Exemple :
25
26 {{code language="Shell"}}
27 a2enmod proxy_ajp
28 {{/code}}
29
30 Si cette commande échoue ou n’existe pas, suivez les mêmes étapes que pour Windows.
31
32 == {{id name="configuration-du-routage-apache-httpd-vers-tomcat"/}}Configuration du routage apache httpd vers tomcat ==
33
34 === {{id name="tomcat-conf"/}}Apache Tomcat ===
35
36 Du côté de Apache Tomcat, dans le fichier de configuration **<install_tomcat>/conf/server.xml** ajoutez ou vérifiez que le connecteur ajp existe :
37
38 {{code language="xml"}}
39 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"></Connector>
40 {{/code}}
41
42 (% class="box infomessage" %)
43 (((
44 Le redirectPort est utilisé pour les requêtes ayant une contrainte de sécurité obligeant un transport en SSL
45 )))
46
47 (% class="box warningmessage" %)
48 (((
49 Pensez à relancer Tomcat après une modification du fichier server.xml
50 )))
51
52 === {{id name="apache-httpd"/}}Apache HTTPD ===
53
54 Du côté de Apache httpd, dans le fichier de votre hôte virtuel (virtual host), ajoutez la directive **ProxyPass** pour que httpd se connecte au connecteur AJP Tomcat :
55
56 {{code}}
57 <VirtualHost *:80> 
58 ServerAdmin support@digdash.com 
59 ServerName monserveur.digdash.com 
60 DocumentRoot /var/www 
61 ProxyPass / ajp:~/~/montomcat.digdash.com:8009/
62 <Directory ></Directory> 
63 Options FollowSymLinks
64 AllowOverride None
65 </Directory>
66 <Directory /var/www>
67 Options Indexes FollowSymLinks MultiViews
68 AllowOverride None
69 Require all granted
70 </Directory>
71 ErrorLog logs/error_apache.log
72 LogLevel warn
73 CustomLog logs/access_apache.log combined
74 </VirtualHost>
75 {{/code}}
76
77 (% class="box warningmessage" %)
78 (((
79 Attention : N’oubliez pas de relancer apache httpd après une modification des fichiers de configuration.
80 )))
81
82 ==== {{id name="timeout"/}}Timeout ====
83
84 Il peut être nécessaire de spécifier une valeur de timeout sur le connecteur AJP plus importante que celle par défaut (60 secondes).
85
86 Certaines procédures qui dépassent la minute de calcul (exports, fabriques, sauvegarde/restauration…) peuvent alors être interrompues par Apache httpd, qui renvoie une erreur HTTP 500 au client.
87
88 Pour modifier cette valeur vous pouvez ajouter le paramètre **timeout=<secondes>** au niveau du ProxyPass, par exemple :
89
90 {{code language="properties"}}
91 ProxyPass / ajp://montomcat.digdash.com:8009/ timeout=300
92 {{/code}}
93
94 == {{id name="alternative-configuration-du-routage-apache-httpd-vers-tomcat-avec-changement-du-nom-de-répertoire"/}}Alternative : Configuration du routage apache httpd vers tomcat avec changement du nom de répertoire ==
95
96 === {{id name="objectif"/}}Objectif ===
97
98 Se connecter avec une URL comportant un répertoire parent différent.
99 Dans cet exemple nous allons prendre le répertoire **domaine_securite1/** et donc accéder à la page d’accueil avec cette URL : http:~/~/machine/domaine_securite1/adminconsole.
100
101 === {{id name="apache-tomcat"/}}Apache Tomcat ===
102
103 Même configuration que [[Configuration du routage apache httpd vers tomcat>>path:#tomcat-conf]].
104
105 === {{id name="apache-httpd-1"/}}Apache HTTPD ===
106
107 Du côté de Apache HTTPD, dans le fichier de votre hôte virtuel (virtual host), ajoutez les directives **ProxyPass**, **ProxyPassReverse** et **ProxyPassReverseCookiePath** vers votre connecteur AJP Tomcat :
108
109 {{code}}
110 <VirtualHost *:80>
111     ServerAdmin support@digdash.com
112     ServerName srvapache
113     DocumentRoot /var/www
114     <Directory ></Directory>
115             Options FollowSymLinks
116             AllowOverride None
117     </Directory>
118     <Directory /var/www></Directory>
119             Options Indexes FollowSymLinks MultiViews
120             AllowOverride None
121             Require all granted
122     </Directory>
123     ProxyPass "/domaine_securite1" "ajp://srvtomcat:8009"
124     ProxyPassReverseCookiePath  "/" "/domaine_securite1"
125     ProxyPassReverse "/domaine_securite1" "http://srvapache"
126     ErrorLog logs/error_apache.log
127     LogLevel warn
128     CustomLog logs/access_apache.log combined
129 </VirtualHost>
130 {{/code}}
131
132 = {{id name="activer-le-mode-https-ssl"/}}Activer le mode https (SSL) =
133
134 == {{id name="prérequis-1"/}}Prérequis ==
135
136 * Posséder un certificat valide pour son réseau ou un certificat approuvé par une autorité tierce reconnue par les navigateurs par défaut. (ex : Comodo, Globalsign, Thawte, Verisign…)
137 * Avoir une version de Apache httpd récente avec les derniers patchs de sécurité concernant ssl
138 * Vérifier que le module ssl est activé (voir [[Ajouter un module dans apache httpd>>path:#module]])
139 * Avoir compris la mise en oeuvre décrite dans [[Connecteur Apache HTTPD / Tomcat : AJP>>path:#main]]
140
141 == {{id name="configuration"/}}Configuration ==
142
143 Ajoutez une directive **Listen** pour que httpd écoute le port 443 :
144 **<install_apache>/conf/httpd.conf** :
145
146 {{code language="properties"}}
147 Listen 443
148 {{/code}}
149
150 Ensuite changez le port utilisé, activez le ssl et configurez le certificat et la clé utilisés :
151
152 {{code}}
153 <VirtualHost *:443>
154     ServerAdmin support@digdash.com
155     ServerName monserveur.digdash.com
156     SSLEngine on
157     SSLCertificateKeyFile /etc/ssl/maclef.key
158     SSLCertificateFile /etc/ssl/moncertif.crt
159     SSLCertificateChainFile /etc/ssl/certif.ca-bundle
160     DocumentRoot /var/www
161     ProxyPass / ajp://montomcat.digdash.com:8009/
162     <Directory ></Directory>
163             Options FollowSymLinks
164             AllowOverride None
165     </Directory>
166     <Directory /var/www></Directory>
167             Options Indexes FollowSymLinks MultiViews
168             AllowOverride None
169             Require all granted
170     </Directory>
171     ErrorLog logs/error_apache.log
172     LogLevel warn
173     CustomLog logs/access_apache.log combined
174 </VirtualHost>
175 {{/code}}
176
177 === {{id name="sslpassphrasedialog"/}}SSLPassphraseDialog ===
178
179 Si votre clé privée est cryptée, il faudra spécifier le mot de passe au démarrage de httpd ou utiliser la directive [[SSLPassPhraseDialog>>url:https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslpassphrasedialog]].
180
181 (% class="box warningmessage" %)
182 (((
183 **Attention** : Cette directive n’est pas supportée sous **Windows**. Il faudra l’enlever du fichier de configuration et il vous faudra remplacer votre clé privée par une clé non cryptée. Pour remplacer la clé, il suffit de décrypter la clé privée existante et d'exporter la clé non cryptée vers un fichier (avec openssl rsa -in clé_cryptée -out clé_noncryptée par exemple).
184 )))
185
186 Pour utiliser la directive sans devoir saisir le mot de passe il faut créer un fichier script qui affiche le mot de passe requis (sur stdout). Par exemple :
187
188 **motdepasse.sh** :
189
190 {{code language="sh"}}
191 #!/bin/bash
192 echo motdepasse
193 {{/code}}
194
195 **httpd.conf** :
196
197 {{code language="xml"}}
198 <IfModule ssl_module>
199 SSLPassPhraseDialog "exec:/chemin/vers/motdepasse.sh"
200 </IfModule>
201 {{/code}}
202
203 = {{id name="équilibrage-de-charge-basculement-actif-actif-loadbalancing"/}}Équilibrage de charge (Basculement actif / actif [Loadbalancing]) =
204
205 Chaque session utilisateur est attribuée à un seul serveur tomcat (sticky session). Si un serveur tomcat tombe, l’utilisateur devra s’authentifier à nouveau sur le serveur actif où sa session sera ré-affectée (en cas de SSO ceci est transparent).
206
207 == {{id name="prérequis-2"/}}Prérequis ==
208
209 * Vérifier que le module **proxy_balancer** est activé (voir [[Ajouter un module dans apache httpd>>path:#module]])
210 * Avoir compris la mise en oeuvre décrite dans [[Connecteur Apache HTTPD / Tomcat : AJP>>path:#main]]
211
212 == {{id name="configuration-1"/}}Configuration ==
213
214 === {{id name="apache-tomcat-1"/}}Apache Tomcat ===
215
216 Du côté de Apache Tomcat, dans le fichier de configuration **<install_tomcat>/conf/server.xml**, ajoutez ou vérifiez que le connecteur AJP existe :
217
218 {{code language="xml"}}
219 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"></Connector>
220 {{/code}}
221
222 Ajoutez ou vérifiez que la balise **engine** possède un attribut **jvmRoute** avec un identifiant unique sur chaque machine cible :
223
224 {{code language="xml"}}
225 <Engine name="Catalina" defaultHost="localhost" jvmRoute="m1">
226 {{/code}}
227
228 === {{id name="apache-httpd-2"/}}Apache HTTPD ===
229
230 Du côté de apache httpd, dans le fichier de votre hôte virtuel (virtual host) :
231
232 {{code}}
233 <VirtualHost lap-sus:80>
234     ServerAdmin support@digdash.com
235     DocumentRoot "C:/htdocs"
236     ServerName monserveur.digdash.com
237
238     <Proxy balancer://monserveur.digdash.com>
239         BalancerMember ajp://montomcat1.digdash.com:8009 route=m1
240         BalancerMember ajp://montomcat2.digdash.com:8009 route=m2
241         ProxySet stickysession=JSESSIONID
242     </Proxy>
243
244     ProxyPass / "balancer://monserveur.digdash.com/" stickysession=JSESSIONID
245         scolonpathdelim=On
246     <Directory ></Directory>
247         Options FollowSymLinks
248         AllowOverride None
249         Require all granted
250         ProxyPassReverse balancer://monserveur.digdash.com/
251     </Directory>
252
253     ErrorLog logs/error_apache.log
254     LogLevel warn
255     CustomLog logs/acces_apache.log combined
256 </VirtualHost>
257 {{/code}}
258
259 = Cookie SameSite : Intégration de DigDash Enterprise dans un portail d'Entreprise =
260
261 Les version récentes de Chrome (80 et plus) sont plus restrictives sur l'utilisation de cookies de différents sites dans une page. Dans le cas ou un dashboard DigDash est intégré à une page, par exemple via une IFRAME, vous devez maintenant configurer la stratégie SameSite pour éviter que Chrome ne filtre les cookies du dashboard. Cela peut se faire du coté Apache.
262
263 1. __Activer le module headers__
264 {{code language="Shell"}}/etc/apache2/mods-enabled# ln -s ../mods-available/headers.load headers.load{{/code}}
265 1. __Configurer la politique SameSite dans /etc/apache2/apache2.conf (à la fin)__
266 {{code language="properties"}}Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure;SameSite=None{{/code}}
267
268