...
Note:
Les utilisateurs, chemins d'installation, ports utilisés ci-dessous ne sont qu'une suggestion.
Les exemples de configuration système sont basés sur Debian Trixie.
Les deux services seront installés sur le même serveur, l'un répondant avec le nom esup-sgc.univ-ville.fr et l'autre avec le nom esup-nfc-tag.univ-ville.fr.
Ces VirtualHosts seront configurés sous Apache.
...
Installer les deux instances de Tomcat. L'une sera utilisée pour ESUP-SGC, l'autre pour ESUP-NFC-TAG.
...
| language | bash |
|---|---|
| theme | RDark |
Plusieurs choix sont possibles :
...
- on peut récupérer un binaire tomcat depuis
...
- tomcat.apache.org/download-10.cgi et installer manuellement celui-ci ;
- on peut installer le tomcat fourni par le gestionnaire de paquets de la distribution ;
- on peut aussi préférer jetty (installation via binaire ou paquet comme pour tomcat).
Dans la suite de cette documentation, on choisit l'option de l'installation manuelle car celle-ci a le mérite d'être indépendante du système utilisé ; l'installation par paquet peut toutefois être préférable pour profiter des mises à jour facilitées par votre distribution (apt sous debian) - c'est d'ailleurs cette option qui a été mise en place dans la VM ESUP-SGC de démonstration.
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
cd /opt/ wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.48/bin/apache-tomcat-10.1.48.tar.gz tomcat/tomcat-9/v9.0.58/bin/apache-tomcat-9.0.58.tar.gz tar xzvf apache-tomcat-9.0.58.tar.gz mv apache-tomcat-9.0.58 apache-tomcat-9.0.58-esup-nfc-tag tar xzvf apache-tomcat-910.01.5848.tar.gz mv apache-tomcat-910.01.5848 apache-tomcat-910.0.581.48-esup-nfc-tag tar xzvf apache-tomcat-10.1.48.tar.gz mv apache-tomcat-10.1.48 apache-tomcat-10.1.48-esup-sgc ln -s apache-tomcat-910.01.5848-esup-nfc-tag tomcat-esup-nfc-tag ln -s apache-tomcat-910.01.5848-esup-sgc tomcat-esup-sgc rm -Rf /opt/tomcat-esup-sgc/webapps/* mkdir /opt/tomcat-esup-sgc/webapps/ROOT/ rm -Rf /opt/tomcat-esup-nfc-tag/webapps/* mkdir /opt/tomcat-esup-nfc-tag/webapps/ROOT/ chown -R esup:esup /opt/apache-tomcat-910.01.5848-esup-sgc/ chown -R esup:esup /opt/apache-tomcat-910.01.5848-esup-nfc-tag/ |
Note : Le contenu du dossier webapps est impérativement à supprimer, si vous ne le faites pas l'interface d'administration d'esup-sgc ne s'affichera pas. l'URL /manager rentrera en conflit avec la webapp manager de tomcat livrée par défaut lors du déploiement du serveur tomcat.
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
cat > /opt/esup-env <<EOF #!/bin/sh JAVA_HOME=/opt/jdk #GRADLE_HOME=/usr/local/gradle-2.14.1 #ANDROID_HOME=/usr/local/android-sdk JAVA_OPTS="-Xms256m -Xmx512m" EOFOPTS="-Xms256m -Xmx512m" EOF |
Note: si vous devez utiliser des certificats dont les autorités de certifications ne sont pas reconnus par le trustore par défaut de votre JVM (certificats autosignés par exemple), vous pouvez à ce niveau préciser dans JAVA_OPTS un trustore spécifique (que vous créez vous même) intégrant les autorités de certificats utilisés par les VirtualHosts Apache (ou encore serveurs ldaps).
...
Configuration d'Apache
Activer les modules suivants:
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
a2enmod rewrite
a2enmod ssl
a2enmod proxy_ajp
a2enmod proxy_http
a2enmod shib
|
...
modules suivants:
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
a2enmod rewrite
a2enmod ssl
a2enmod proxy_ajp
a2enmod proxy_http
a2enmod shib
a2enmod headers
|
Créer un fichier de configuration pour le VirtualHost esup-sgc.univ-ville.fr /etc/apache2/sites-available/esup-sgc.univ-ville.fr.conf
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<VirtualHost *:80>
ServerName esup-sgc.univ-ville.fr
ServerAdmin webmaster@univ-ville.fr
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
RewriteRule ^/(.*)$ https://esup-sgc.univ-ville.fr/$1 [L,R]
</VirtualHost>
<VirtualHost *:443>
ServerName esup-sgc.univ-ville.fr
ServerAdmin webmaster@univ-ville.fr
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/esup-sgc.univ-ville.fr/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/esup-sgc.univ-ville.fr/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/esup-sgc.univ-ville.fr/chain.pem
ProxyPass /Shibboleth.sso !
ProxyPass /secure !
ScriptAlias /secure /var/www/printenv.pl
ShibCompatValidUser Off
# Security measure: remove any client-supplied REMOTE_USER header early.
RequestHeader unset REMOTE_USER early
<Location /Shibboleth.sso>
SetHandler shib
AuthType None
Require all granted
</Location>
<Location /shibboleth-sp>
AuthType None
Require all granted
</Location>
Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
<Location /secure>
AuthType shibboleth
ShibRequestSetting requireSession 1
require shib-session
ShibUseHeaders On
ShibRequestSetting applicationId default
</Location>
<Location /> | ||||
| Bloc de code | ||||
| ||||
<VirtualHost *:80> ServerName esup-sgc.univ-ville.fr ServerAdmin webmaster@univ-ville.fr DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] RewriteRule ^/(.*)$ https://esup-sgc.univ-ville.fr/$1 [L,R] </VirtualHost> <VirtualHost *:443> ServerName esup-sgc.univ-ville.fr ServerAdmin webmaster@univ-ville.fr DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/esup-sgc.univ-ville.fr/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/esup-sgc.univ-ville.fr/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/esup-sgc.univ-ville.fr/chain.pem ProxyPass /Shibboleth.sso ! ProxyPass /secure ! ScriptAlias /secure /var/www/printenv.pl ShibCompatValidUser Off <Location /Shibboleth.sso> SetHandler shib AuthType Noneshibboleth RequireShibRequestSetting allrequireSession granted1 </Location> <Locationrequire /shibbolethshib-sp>session AuthTypeShibUseHeaders NoneOn RequireShibRequestSetting allapplicationId granteddefault </Location> <Location Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css"/resources"> <Location /secure> Require AuthType shibbolethall granted ShibRequestSettingShibRequireSession requireSession 1Off </Location> require shib-session<Location "/wsrest"> Require ShibUseHeadersall Ongranted ShibRequireSession ShibRequestSetting applicationId defaultOff </Location> <Location "/payboxcallback"> Require AuthTypeall shibbolethgranted ShibRequireSession Off ShibRequestSetting requireSession 1 </Location> ProxyPass / ajp://localhost:8209/ ttl=10 timeout=3600 retry=1 require shib-session ShibUseHeaders OnAddOutputFilterByType DEFLATE text/plain text/html text/css text/javascript application/x-javascript application/javascript application/json image/svg+xml </VirtualHost> |
Idem pour le VirtualHost esup-nfc-tag.univ-ville.fr dans /etc/apache2/sites-available/esup-nfc-tag.univ-ville.fr.conf
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<VirtualHost *:80> ServerName esup-nfc-tag.univ-ville.fr ShibRequestSetting applicationId defaultServerAdmin webmaster@univ-ville.fr </Location> <Location "/resources">DocumentRoot /var/www/html Require all grantedErrorLog ${APACHE_LOG_DIR}/error_esup-nfc-tag.log CustomLog ShibRequireSession Off </Location>${APACHE_LOG_DIR}/access_esup-nfc-tag.log combined RewriteEngine On <Location "/wsrest"> RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule Require.* all- granted[F] RewriteRule ^/(.*)$ ShibRequireSession Off https://esup-nfc-tag.univ-ville.fr/$1 [L,R] </Location>VirtualHost> <Location "/payboxcallback"><VirtualHost *:443> ServerName esup-nfc-tag.univ-ville.fr Require all grantedServerAdmin webmaster@univ-ville.fr DocumentRoot /var/www/html ShibRequireSession Off ErrorLog </Location> ${APACHE_LOG_DIR}/error_esup-nfc-tag.log ProxyPass / ajp://localhost:8209/ ttl=10 timeout=3600 retry=1 AddOutputFilterByType DEFLATE text/plain text/html text/css text/javascript application/x-javascript application/javascript application/json image/svg+xml </VirtualHost> |
...
CustomLog ${APACHE_LOG_DIR}/access_esup-nfc-tag.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/esup-nfc-tag.univ-ville.fr/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/esup-nfc-tag.univ-ville.fr |
...
/privkey.pem SSLCertificateChainFile /etc/ |
...
letsencrypt/ |
...
live/esup-nfc-tag.univ-ville.fr |
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<VirtualHost *:80>/chain.pem ServerName esup-nfc-tag.univ-ville.frProxyPass /Shibboleth.sso ! ServerAdmin webmaster@univ-ville.fr ProxyPass /secure ! ScriptAlias DocumentRoot/secure /var/www/html ErrorLog ${APACHE_LOG_DIR}/error_esup-nfc-tag.log printenv.pl ShibCompatValidUser Off # Security measure: remove any client-supplied REMOTE_USER header early. CustomLog ${APACHE_LOG_DIR}/access_esup-nfc-tag.log combined RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] RewriteRule ^/(.*)$ https://esup-nfc-tag.univ-ville.fr/$1 [L,R] </VirtualHost> <VirtualHost *:443> ServerName esup-nfc-tag.univ-ville.fr ServerAdmin webmaster@univ-ville.fr DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error_esup-nfc-tag.log CustomLog ${APACHE_LOG_DIR}/access_esup-nfc-tag.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/esup-nfc-tag.univ-ville.fr/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/esup-nfc-tag.univ-ville.fr/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/esup-nfc-tag.univ-ville.fr/chain.pem ProxyPass /Shibboleth.sso ! ProxyPass /secure ! ScriptAlias /secure /var/www/printenv.pl ShibCompatValidUser OffRequestHeader unset REMOTE_USER early <Location /Shibboleth.sso> SetHandler shib AuthType None Require all granted </Location> <Location /shibboleth-sp> AuthType None Require all granted </Location> Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css <Location /secure> AuthType shibboleth ShibRequestSetting requireSession 1 require shib-session ShibUseHeaders On ShibRequestSetting applicationId esup-nfc-tag </Location> <Location /manager> AuthType shibboleth ShibRequestSetting requireSession 1 require shib-session ShibUseHeaders On ShibRequestSetting applicationId esup-nfc-tag </Location> <Location /admin> AuthType shibboleth ShibRequestSetting requireSession 1 require shib-session ShibUseHeaders On ShibRequestSetting applicationId esup-nfc-tag </Location> <Location /nfc> AuthType shibboleth ShibRequestSetting requireSession 1 require shib-session ShibUseHeaders On ShibRequestSetting applicationId esup-nfc-tag </Location> ProxyPass / ajp://localhost:8309/ ttl=10 timeout=3600 retry=1 AddOutputFilterByType DEFLATE text/plain text/html text/css text/javascript application/x-javascript application/javascript application/json image/svg+xml </VirtualHost> |
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<ApplicationDefaults entityID="https://esup-sgc.univ-ville.fr" ...>
<Sessions ...>
<!--
<SSO entityID="https://idp.univ-ville.fr/idp/shibboleth">
SAML2 SAML1
</SSO>
-->
<SSO location="/"
discoveryProtocol="SAMLDS" discoveryURL="https://discovery.renater.fr/renater"> discoveryProtocol="SAMLDS" discoveryURL="https://discovery.renater.fr/renater">
SAML2 SAML1
SAML2 SAML1
</SSO> |
Concernant la gestion des sessions, obligez l'usage de https pour les cookies mais permettez un changement d'IP de l'utilisateur (certains fournisseurs d'accès internet bas coût ne fixe pas les IPs de leurs clients en mobile) : checkAddress et consistentAddress doivent être à false.
Exemple :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<Sessions lifetime="28800" timeout="3600" relayState="ss:mem" checkAddress="false" consistentAddress="false" handlerSSL="true" cookieProps="https" </SSO> redirectLimit="exact"> |
Penser à modifier le contact du support:
...