Dies ist eine alte Version des Dokuments!
IdP-Vorarbeiten: Tomcat
Installation
Debian 10
root@idp:~# apt install tomcat9
CentOS 7
CentOS 7 bringt über das Repository noch Tomcat 7 mit. Neuere Versionen können Sie manuell installieren.
root@idp:~# yum -y install tomcat
OpenSUSE Leap 15.1
OpenSUSE Leap 15 kommt mit Tomcat 9.
root@idp:~# zypper install tomcat
Startup-Konfiguration
Einige globale Java-Parameter müssen beim Tomcat-Start festgelegt werden. Das IdP-Servlet benötigt mehr Speicher, als gemäß den Voreinstellungen vorgesehen ist und Zugriff auf das Filesystem:
Debian 10
- /etc/default/tomcat9
# den Tomcat mit genug Speicher starten: JAVA_OPTS="-Djava.awt.headless=true -XX:+UseConcMarkSweepGC -Xms1024m -Xmx2048m"
Für die Schreibberechtigungen vom Tomcat müssen ein Verzeichnis und eine Override-Konfiguration für Systemd angelegt werden:
root@idp:~# mkdir /etc/systemd/system/tomcat9.service.d
Die Datei wird in dem soeben erstellten Verzeichnis angelegt:
- /etc/systemd/system/tomcat9.service.d/override.conf
[Service] ReadWritePaths=/opt/shibboleth-idp/logs/ ReadWritePaths=/opt/shibboleth-idp/metadata/
Anschließend:
root@idp:~# systemctl daemon-reload
CentOS und OpenSUSE
Die Tomcat-Start-Optionen werden in /etc/tomcat/tomcat.conf
festgelegt.
Port-Konfiguration
In der Tomcat-Configuration wird dann
- aus Sicherheitsgründen der Default-Port 8080 abgeschaltet
- auf Port 8009 der AJP-Connector aktiviert über den der vorgelagerte Webserver Anfragen an Tomcat weiterleitet
- /etc/tomcat9/server.xml
<!-- ... --> <Service name="Catalina"> <!-- ... --> <!-- non-SSL/TLS HTTP/1.1 Connector on port 8080 abschalten --> <!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> <!-- ... --> <!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" address="127.0.0.1" protocol="AJP/1.3" redirectPort="8443" enableLookups="false" useIPVHosts="true" maxPostSize="100000" URIEncoding="UTF-8" /> <!-- ... --> </Service> <!-- ... -->
IdP-Sessions gehen bei einem Tomcat-Neustart in jedem Fall verloren. Daher ergibt es keinen Sinn (bzw. führt nur zu unnötigen IdP-Fehlermeldungen), einzustellen, dass alte Sessions über Tomcat-Neustarts persistiert werden sollen. Deaktivieren Sie daher dieses Tomcat-Feature:
- /etc/tomcat9/context.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- ... --> <!-- The contents of this file will be loaded for each web application --> <Context> <!-- Default set of monitored resources. If one of these changes, the --> <!-- web application will be reloaded. --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- siehe https://wiki.shibboleth.net/confluence/display/IDP30/ApacheTomcat8 --> <Manager pathname="" /> </Context>
Java Standard Tag Library (JSTL)
Debian 10
Unter Debian 10 kann die JSTL aus dem Debian-Repository installiert werden:
root@idp:~# apt install libtaglibs-standard-impl-java
Anschließend muss der Pfad zur .jar-Datei noch /etc/tomcat9/catalina.properties
hinzugefügt werden:
- /etc/tomcat9/catalina.properties
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","/usr/share/java/*.jar"
OpenSUSE Leap 15.1
root@idp:~# zypper install jakarta-taglibs-standard
Konfiguration für das IdP-Servlet vorbereiten
Um das IdP-Servlet im Tomcat zu aktivieren, erstellen Sie folgende Datei im Tomcat-localhost-Context:
- /etc/tomcat9/Catalina/localhost/idp.xml
<Context docBase="/opt/shibboleth-idp/war/idp.war" privileged="true" unpackWAR="true" antiResourceLocking="false" swallowOutput="true" />
Sie haben jetzt eine Tomcat-Konfiguration, die nicht startet, solange nichts unter /opt/shibboleth liegt!
Weiter geht es mit den Zertifikaten.