==================================================================================================== Bereitstellen einer neuen Version: apache-tomcat-9.0.x ==================================================================================================== Ausgangslage: - Eine händisch unter '/opt/tomcat-9.0.xx' bereitgestellte Version des Apache Tomcat ist unter '/opt/tomcat-latest' verlinkt und mittels selbst erstellter '/etc/systemd/system/tomcat9.service' im System integriert - '/opt/tomcat-latest/conf/Catalina/localhost/idp.xml' ist der Hook des tomcat zur Schibboleth-Version ---------------------------------------------------------------------------------------------------- Stand: 04.08.2020 - Wechsel von apache-tomcat-9.0.16 zu apache-tomcat-9.0.37 ---------------------------------------------------------------------------------------------------- - Binary und PGP-Signatur herunterladen: - Idealerweise in z.B. einen Verzeichnis /opt/install welches root vorbehalten ist ---------------------------------------------------------------------------------------------------- cd /opt/install/ ... sudo curl -x http://:8080 -O http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz oder sudo curl -O http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz ... sudo curl -x http://:8080 -O http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz.asc oder sudo curl -O http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz.asc ... - Prüfen: gpg --verify apache-tomcat-9.0.37.tar.gz.asc apache-tomcat-9.0.37.tar.gz ... gpg: Signature made Tue 30 Jun 2020 10:15:07 PM CEST gpg: using RSA key A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 gpg: Can't check signature: No public key ... - Holen wir und den public key gpg --keyserver pgpkeys.mit.edu --keyserver-options http-proxy=http://:8080 --recv-key A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 ... gpg --verify apache-tomcat-9.0.13.tar.gz.asc apache-tomcat-9.0.13.tar.gz ... - Erneut Prüfen: gpg: Signature made Tue 30 Jun 2020 10:15:07 PM CEST gpg: using RSA key A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 gpg: Good signature from "Mark E D Thomas " [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: A9C5 DF4D 22E9 9998 D987 5A51 10C0 1C5A 2F60 59E7 ... - Gegenprüfung über Fingerprint des public key gpg --fingerprint A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 ... pub rsa4096 2009-09-18 [SC] A9C5 DF4D 22E9 9998 D987 5A51 10C0 1C5A 2F60 59E7 uid [ unknown] Mark E D Thomas sub rsa4096 2009-09-18 [E] ... - OK: A9C5 DF4D 22E9 9998 D987 5A51 10C0 1C5A 2F60 59E7 A9C5 DF4D 22E9 9998 D987 5A51 10C0 1C5A 2F60 59E7 ... ---------------------------------------------------------------------------------------------------- - Binary bereitstellen ---------------------------------------------------------------------------------------------------- sudo mkdir /opt/tomcat-9.0.37 ... sudo tar xzvf apache-tomcat-9.0.37.tar.gz -C /opt/tomcat-9.0.37 --strip-components=1 ... sudo chown -R tomcat9: /opt/tomcat-9.0.37 ... ---------------------------------------------------------------------------------------------------- - Verzeichnis mit den Logdateien des tomcat besonders behandeln ---------------------------------------------------------------------------------------------------- sudo chown tomcat9:adm /opt/tomcat-9.0.37/logs ... ---------------------------------------------------------------------------------------------------- - Wir benötigen für tomcat 9.0.37 mindestens Version 1.2.23 von libtcnative-1 ---------------------------------------------------------------------------------------------------- ==> Lösung: Pinning auf focal - Wir erweitern: sudo vi /etc/apt/sources.list am Ende mit: ... ###Stand: 04.08.2020 ###sev Wir benoetigen libtcnative-1 (1.2.23-1) aus focal deb http://debian.charite.de/ubuntu/ focal main restricted universe deb http://debian.charite.de/ubuntu/ focal-updates main restricted universe ... - Wir erstellen: sudo vi /etc/apt/preferences.d/focal.pref ... Package: * Pin: release n=focal Pin-Priority: -10 Package: libtcnative-1 Pin: release n=focal Pin-Priority: 500 ... sudo apt-get update ... sudo apt-get upgrade ... Sieht so aus als wären sich die Entwickler nun darüber einig, wer den symbolic link setzt: ... lrwxrwxrwx 1 root root 23 Jul 11 2019 /usr/lib/x86_64-linux-gnu/libtcnative-1.so -> libtcnative-1.so.0.2.23 ... Sonst: ... sudo ln -sv /usr/lib/x86_64-linux-gnu/libtcnative-1.so /usr/lib/ ... ---------------------------------------------------------------------------------------------------- - jstl-1.2.jar aus der Shibboleth-Installation bereitstellen TODO: Existiert auch eine aktuellere Version, oder muss es genau diese Version sein? ---------------------------------------------------------------------------------------------------- - übernehmen wir aus der noch aktuellen Version unter 'tomcat-latest' sudo cp /opt/tomcat-latest/lib/jstl-1.2.jar /opt/tomcat-9.0.37/lib/jstl-1.2.jar sudo chown tomcat9: /opt/tomcat-9.0.37/lib/jstl-1.2.jar ... cd ~ ... ---------------------------------------------------------------------------------------------------- - Von überflüssigen webapps und Inhalten trennen ---------------------------------------------------------------------------------------------------- sudo rm -R /opt/tomcat-9.0.37/webapps/docs sudo rm -R /opt/tomcat-9.0.37/webapps/examples sudo rm -R /opt/tomcat-9.0.37/webapps/host-manager sudo rm -R /opt/tomcat-9.0.37/webapps/manager ... sudo -i ... cd /opt/tomcat-9.0.37/webapps/ROOT/ rm *.* echo 'it works' > index.html chown tomcat9: index.html logout ... ----------------------------------------------------------------------------------------------------------------------------------------------------- - Originale der Konfigurationsdateien sichern ----------------------------------------------------------------------------------------------------------------------------------------------------- sudo cp /opt/tomcat-9.0.37/conf/catalina.policy /opt/tomcat-latest/conf/catalina.policy.orig sudo cp /opt/tomcat-9.0.37/conf/catalina.properties /opt/tomcat-latest/conf/catalina.properties.orig sudo cp /opt/tomcat-9.0.37/conf/context.xml /opt/tomcat-latest/conf/context.xml.orig sudo cp /opt/tomcat-9.0.37/conf/server.xml /opt/tomcat-latest/conf/server.xml.orig sudo cp /opt/tomcat-9.0.37/conf/tomcat-users.xml /opt/tomcat-latest/conf/tomcat-users.xml.orig sudo cp /opt/tomcat-9.0.37/conf/web.xml /opt/tomcat-latest/conf/web.xml.orig sudo cp /opt/tomcat-9.0.37/conf/logging.properties /opt/tomcat-latest/conf/logging.properties.orig ... ----------------------------------------------------------------------------------------------------------------------------------------------------- - tomcat für die schibboleth-Installation vorbereiten und etwas sicherer machen ----------------------------------------------------------------------------------------------------------------------------------------------------- ... - Fuer den JSP-Compiler den Entwicklermodus deaktivieren sudo vi /opt/tomcat-9.0.37/conf/web.xml ... Ca. Zeile 278: ... jsp org.apache.jasper.servlet.JspServlet fork false xpoweredBy false development false 3 ... - catalina.jar: Vortäuschen der verwendeten Server-Version: Die bei einem HTTP-Fehler 4xx oder 5xx ausgelieferten 'Dateien' sind fest als Ausgabestrings hinterlegt. Wir können aber die einkompilierten Konstanten für die Server-Version beeinflussen. In der Datei ServerInfo.properties die Informationen überschreiben. Dazu wird diese Datei aus- und nach dem Ändern wieder in das Jar-Archiv eingepackt. - Das ist aber nichts für Entwicklungsumgebungen mit z.B. Eclipse oder Netbeans. Die benötigen die Strings aus org/apache/catalina/util/ServerInfo.properties um die Version des Application-Servers zu erkennen. ... sudo jar xf /opt/tomcat-9.0.37/lib/catalina.jar org/apache/catalina/util/ServerInfo.properties sudo vi org/apache/catalina/util/ServerInfo.properties ... ###server.info=Apache Tomcat/9.0.37 ###server.number=9.0.37.0 ###server.built=Jun 30 2020 20:09:49 UTC server.info=SomeWebServer server.number=0.0.0.0 server.built=Jan 01 1970 00:00:00 UTC ... sudo jar uf /opt/tomcat-9.0.37/lib/catalina.jar org/apache/catalina/util/ServerInfo.properties ... sudo rm -R ./org ... - Port-Konfigurtion In der Tomcat-Configuration wird der Default-Port 8080 abgeschaltet und auf Port 8009 der AJP-Connector aktiviert über den der vorgelagerte Webserver Anfragen an Tomcat weiterleitet. Es wird eingestellt, dass dieser Port nur über localhost erreichbar ist. Somit ist der tomcat9 nach außen nicht direkt sichtbar! ... sudo vi /opt/tomcat-9.0.37/conf/server.xml ... - Um das IdP-Servlet im Tomcat zu aktivieren wird eine context-Datei hinterlegt. ... sudo mkdir -p /opt/tomcat-9.0.37/conf/Catalina/localhost ... sudo vi /opt/tomcat-9.0.37/conf/Catalina/localhost/idp.xml ... ... sudo chown -R tomcat9: /opt/tomcat-9.0.37/conf/Catalina ... - IdP-Sessions gehen bei einem Tomcat-Neustart in jedem Fall verloren. Daher macht es keinen Sinn (bzw. führt nur zu unnötigen IdP-Fehlermeldungen) wenn alte Sessions bei einen Tomcat-Neustart weiter existieren. Wir deaktivieren dieses Tomcat-Feature: sudo vi /opt/tomcat-9.0.37/conf/context.xml ... ... ---------------------------------------------------------------------------------------------------- Optional: Überflüssige Logdateien abstellen - Die Zugriffslogs des tomcat werden eigentlich nicht benötigt - Auf jeden Fall kann bei 'handlers' entfallen: 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler Diese Web-Applivationen haben wir ja gelöscht ---------------------------------------------------------------------------------------------------- sudo vi /opt/tomcat-9.0.37/conf/logging.properties ... ###handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler handlers = java.util.logging.ConsoleHandler ####.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler .handlers = java.util.logging.ConsoleHandler ... ---------------------------------------------------------------------------------------------------- - Konfigurationstest ---------------------------------------------------------------------------------------------------- sudo /opt/tomcat-9.0.37/bin/configtest.sh ... - das sollte in der Ausgabe ohne >= WARNINGS sein - außer natürlich: ... SEVERE: Failed to initialize component [Connector[AJP/1.3-8009]] ... ... ---------------------------------------------------------------------------------------------------- Die alte Version außer Betrieb nehmen Falls gewünscht: Alte Logs kopieren Soflink auf 'tomcat-latest' tauschen Softlink für den Mysql-Connector erneuern Berechtigungen überarbeiten Falls implementiert: Log-Verzeichnis überarbeiten lassen Die neue Version in Betrieb nehmen ---------------------------------------------------------------------------------------------------- sudo systemctl stop tomcat9.service ... sudo cp /opt/tomcat-latest/logs/*.* /opt/tomcat-9.0.37/logs/ ... sudo rm /opt/tomcat-latest sudo ln -s /opt/tomcat-9.0.37 /opt/tomcat-latest ... sudo ln -s /usr/share/java/mysql.jar /opt/tomcat-latest/lib/mysql.jar ... sudo chown -hR tomcat9: /opt/tomcat-latest /opt/tomcat-9.0.37 sudo chown tomcat9:adm /opt/tomcat-latest/logs ... sudo /usr/local/scripts/handletomcatlogs ... sudo systemctl start tomcat9.service ... ------------------------------------------------------------------------------------------------------------------------ Kontrolle: ------------------------------------------------------------------------------------------------------------------------ sudo vi /opt/tomcat-latest/logs/catalina.out - sollte fehlerfrei sein ... sudo vi /opt/shibboleth-idp/logs/idp-warn.log - sollte fehlerfrei sein ... sudo vi /opt/shibboleth-idp/logs/idp-process.log - sollte aktuell sein ... ====Status https:///idp/status Funktionstest Identity Provider https://doku.tid.dfn.de/de:functionaltest_idp - https://testsp2.aai.dfn.de - https://testsp3.aai.dfn.de Welche Attribute werden für einen User generiert (kurz)? https:///idp/profile/admin/resolvertest?requester=https%3A%2F%2Ftestsp3.aai.dfn.de%2Fshibboleth&principal= ... ------------------------------------------------------------------------------------------------------------------------ Afräumen: ------------------------------------------------------------------------------------------------------------------------ sudo rm /opt/install/apache-tomcat-9.0.16.tar.gz sudo rm /opt/install/apache-tomcat-9.0.16.tar.gz.asc ... sudo rm -R /opt/tomcat-9.0.16 ...