...
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/apache2letsencrypt/certslive/esup-sgc.crt.univ-ville.fr/cert.pem SSLCertificateKeyFile /etc/apache2letsencrypt/certslive/esup-sgc.key.univ-ville.fr/privkey.pem SSLCACertificateFileSSLCertificateChainFile /etc/apache2/certs/CA.crtletsencrypt/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 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 /> AuthType shibboleth ShibRequestSetting requireSession 1 require shib-session ShibUseHeaders On ShibRequestSetting applicationId default </Location> <Location "/resources"> Require all granted ShibRequireSession Off </Location> <Location "/wsrest"> Require all granted ShibRequireSession Off </Location> <Location "/payboxcallback"> Require all granted ShibRequireSession Off </Location> ProxyPass / ajp://localhost:8209/ ttl=10 timeout=3600 retry=1 <LocationMatch "^/(resources|webjars)"> ExpiresActive On ExpiresByType text/css "access plus 1 hour" ExpiresByType text/javascript "access plus 1 hour" ExpiresByType application/javascript "access plus 1 hour" ExpiresByType image/gif "access plus 1 hour" ExpiresByType image/png "access plus 1 hour" ExpiresByType image/jpg "access plus 1 hour" ExpiresByType image/jpeg "access plus 1 hour" ExpiresByType application/x-shockwave-flash "access plus 1 hour" ExpiresByType image/x-icon "access plus 1 hour" </LocationMatch> CacheRoot /var/cache/httpd/esup-sgc CacheDirLevels 2 CacheDirLength 1 CacheEnable disk /resources AddOutputFilterByType DEFLATE text/plain text/html text/css text/javascript application/x-javascript application/javascript application/json image/svg+xml </VirtualHost> |
...
Bloc de code | ||||
---|---|---|---|---|
| ||||
<VirtualHost *:80> 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 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/apache2letsencrypt/certslive/esup-nfc-tag.crt.univ-ville.fr/cert.pem SSLCertificateKeyFile /etc/apache2letsencrypt/certslive/esup-nfc-tag.key.univ-ville.fr/privkey.pem SSLCACertificateFileSSLCertificateChainFile /etc/apache2letsencrypt/certs/CA.crtlive/esup-nfc-tag.univ-ville.fr/chain.pem ProxyPass /Shibboleth.sso ! ProxyPass /secure ! ScriptAlias /secure /var/www/printenv.pl ShibCompatValidUser Off <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 <Location "/resources"> ExpiresActive On ExpiresByType text/css "access plus 1 hour" ExpiresByType text/javascript "access plus 1 hour" ExpiresByType application/javascript "access plus 1 hour" ExpiresByType image/gif "access plus 1 hour" ExpiresByType image/png "access plus 1 hour" ExpiresByType image/jpg "access plus 1 hour" ExpiresByType image/jpeg "access plus 1 hour" ExpiresByType application/x-shockwave-flash "access plus 1 hour" ExpiresByType image/x-icon "access plus 1 hour" </Location> CacheRoot /var/cache/httpd/esup-nfc-tag CacheDirLevels 2 CacheDirLength 1 CacheEnable disk /resources AddOutputFilterByType DEFLATE text/plain text/html text/css text/javascript application/x-javascript application/javascript application/json image/svg+xml </VirtualHost> |
...
A noter que l'applicationId
du ShibRequestSetting
diffère selon les VirtualHosts.
De plus, dans cet exemple, chaque VirtualHost dispose de son propre certificat. Il est tout à fait possible d'utiliser le même sous-réserve que les noms des deux VirtualHosts y soient indiqués (SAN).
Penser à intégrer ces certificats au keystore des tomcat. Par exemple:
En présentant la chaîne correctement et avec des certificats tels que proposés par Renater/Sectigo (les chemins ci-dessus correspondent à des exemples de chemins de certificats récupérés via le protocole ACME par certbot ... depuis Sectigo) le keystore par défaut de votre JVM suffira et vous n'avez pas besoin alors d'importer unitairement vos certificats dans le keystore java.
Si jamais vous avez un certificat issu d'une autorité de certification non reconnue par votre JVM (à proscrire) vous pouvez, en dernier recours, intégrer ce certificat au keystore ainsi par exemple:
Bloc de codecode | ||||
---|---|---|---|---|
| ||||
keytool -genkey -alias mon_cert -keyalg RSA -keystore# on copie le cacerts initial pour conserver la confiance dans les autorités de certification racines par défaut cp /etc/ssl/certs/java/cacerts /opt/esup.univ-ville.jks # par défaut le password est changeit,on le modifie keytool -storepasswd -keystore cacerts # utile si on doit supprimer un ancien certificat expiré pour en mettre un nouveau keytool -delete -alias mon_cert -keystore /opt/esup.univ-ville.jks # on importe le certificat keytool -import -file /etc/apache2/certs/esup-sgc.crt -alias sgc -trustcacerts -keystore /opt/esup.univ-ville.jks keytool -import -file /etc/apache2/certs/esup-nfc-tag.crt -alias nfctag -trustcacerts -keystore |
À nouveau, normalement, avec un certificat valide et bien présenté, vous n'avez pas besoin de réaliser cette opération sur le keystore java et vous n'avez pas besoin de fait d'avoir ce fichier keystore /opt/esup.univ-ville.jks
...
Activer les sites:
Bloc de code | ||||
---|---|---|---|---|
| ||||
a2dissite 000-default.conf a2ensite esup-sgc.univ-ville.fr a2ensite esup-nfc-tag.univ-ville.fr |
...