- de:shibidp:prepare-http| Vorarbeiten: Webserver ^ de:shibidp:uebersicht|Überblick: Tutorial zur IdP-Inbetriebnahme ^ de:shibidp:config|Start IdP-Konfiguration ->
====== Installation Shibboleth IdP 5.x ======
===== IdP herunterladen =====
Laden Sie den Shibboleth IdP herunter, prüfen Sie die Signatur und entpacken Sie das Archiv. Die aktuelle IdP-Version findet sich stets unter https://shibboleth.net/downloads/identity-provider/latest/. Es empfiehlt sich, die [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199500367/ReleaseNotes|Release Notes]] zu studieren.
Herunterladen des Shibboleth IdP, der Signatur, der Prüfsumme und der PGP-Keys:
root@idp:~# mkdir /opt/install
root@idp:~# wget -P /opt/install https://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-5.x.x.tar.gz
root@idp:~# wget -P /opt/install https://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-5.x.x.tar.gz.asc
root@idp:~# wget -P /opt/install https://shibboleth.net/downloads/identity-provider/archive/5.1.2/shibboleth-identity-provider-5.x.x.tar.gz.sha256
root@idp:~# wget -P /opt/install https://shibboleth.net/downloads/PGP_KEYS
Die Korrektheit des Downloads lässt sich mit Hilfe einer Prüfsumme überprüfen. Über die Prüfsumme wird festgestellt, ob. z.B. Übertragungsfehler aufgetreten sind.
Prüfsumme checken:
root@idp:~# cd /opt/install && sha256sum -c shibboleth-identity-provider-5.x.x.tar.gz.sha256
shibboleth-identity-provider-5.x.x.tar.gz: OK
Importieren der öffentlichen Schlüssel und verifizieren der Signatur:
root@idp:~# gpg --import /opt/install/PGP_KEYS
root@idp:~# gpg --verify /opt/install/shibboleth-identity-provider-5.x.x.tar.gz.asc /opt/install/shibboleth-identity-provider-5.x.x.tar.gz
gpg: Signature made Mon 15 Apr 2024 06:03:42 PM CEST
gpg: using RSA key 7D27E610B8A3DC52
gpg: Good signature from "Philip David Smart " [unknown]
gpg: aka "[jpeg image of size 9378]" [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: B5B5 DD33 2142 AD65 7E8D 87AC 7D27 E610 B8A3 DC52
Entscheiden ist hier "Good signature". Die Warnung "This key is not certified with a trusted signature!" können Sie ignorieren.
Entpacken des Archivs
root@idp:~# tar -xzf /opt/install/shibboleth-identity-provider-5.x.x.tar.gz -C /opt/install
===== Wahl der Entity ID =====
Die Entity ID ist der global eindeutige Identifier Ihres IdP. Sie sollte sich später möglichst nie wieder ändern. Bei der Installation generiert der Installer sie automatisch anhand des Hostnames nach dem Schema ''https://example.org/idp/shibboleth''. Die Entity ID muss von Typ URI sein und ihre Heimateinrichtung muss die Rechte an der verwendeten Domain besitzen. Sie muss jedoch nicht mit dem aktuellen virtuellen Host übereinstimmen. Sie können sie vor Inbetriebnahme des IdP in der Datei ''conf/idp.properties'' auch noch anpassen. **Wählen Sie eine Entity ID, die möglichst langlebig und versionsunabängig ist.** Oft verwendet werden:
* ''https://idp.example.org/idp/shibboleth''
* ''https://login.example.org/idp/shibboleth''
Nicht zu empfehlen sind Werte, die die IdP-Version enthalten, z.B. ''https://idp4.example.org/idp/shibboleth'', da die Entity ID dann erfahrungsgemäß oft nach ein paar Jahren doch geändert werden soll (obwohl Nutzer*innen Ihres IdP sie nicht zu sehen bekommen). Sie können auch bei der Entity ID ''https://idp.example.org/idp/shibboleth'' einen VHost namens idp4.example.org verwenden. Dies wird über die Webserver-Konfiguration bzw. die IdP-Metadaten bekannt gemacht.
===== Interaktiven Installer aufrufen =====
Das Installationsskript findet sich unter ''/opt/install/shibboleth-identity-provider-5.x.x/bin/install.sh''. Beim Ausführen werden die wichtigsten Angaben zum IdP abgefragt, wie der FQDN und das Zielverzeichnis, in das der IdP installiert werden soll. Der Default hierfür ist ''/opt/shibboleth-idp''.
root@idp:~# JAVA_HOME=/usr /opt/install/shibboleth-identity-provider-5.x.x/bin/install.sh
Installation Directory: [/opt/shibboleth-idp] ?
INFO - New Install. Version: 5.x.x
Host Name: [192.168.0.5] ?
idp-dev.hochschule-XY.de
INFO - Creating idp-signing, CN = idp-dev.hochschule-XY.de URI = https://idp-dev.hochschule-XY.de/idp/shibboleth, keySize=3072
INFO - Creating idp-encryption, CN = idp-dev.hochschule-XY.de URI = https://idp-dev.hochschule-XY.de/idp/shibboleth, keySize=3072
INFO - Creating backchannel keystore, CN = idp-dev.hochschule-XY.de URI = https://idp-dev.hochschule-XY.de/idp/shibboleth, keySize=3072
INFO - Creating Sealer KeyStore
INFO - No existing versioning property, initializing...
SAML EntityID: [https://idp-dev.hochschule-XY.de/idp/shibboleth] ?
Attribute Scope: [idp-dev.hochschule-XY.de] ?
INFO - Initializing OpenSAML using the Java Services API
INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmlenc#ripemd160
INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160
INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160
INFO - Including auto-located properties in /opt/shibboleth-idp/conf/ldap.properties
INFO - Including auto-located properties in /opt/shibboleth-idp/conf/services.properties
INFO - Including auto-located properties in /opt/shibboleth-idp/conf/admin/admin.properties
INFO - Including auto-located properties in /opt/shibboleth-idp/conf/saml-nameid.properties
INFO - Including auto-located properties in /opt/shibboleth-idp/conf/authn/authn.properties
INFO - Including auto-located properties in /opt/shibboleth-idp/conf/c14n/subject-c14n.properties
INFO - Creating Metadata to /opt/shibboleth-idp/metadata/idp-metadata.xml
INFO - Rebuilding /opt/test/war/idp.war, Version 5.x.x
INFO - Initial populate from /opt/shibboleth-idp/dist/webapp to /opt/test/webpapp.tmp
INFO - Overlay from /opt/shibboleth-idp/edit-webapp to /opt/test/webpapp.tmp
INFO - Creating war file /opt/shibboleth-idp/war/idp.war
===== Leserechte für Tomcat-User korrigieren =====
Nachdem die IdP-Files installiert sind, versucht der Tomcat, das Servlet automatisch zu starten (siehe Tomcat-Log). Das scheitert üblicherweise zunächst, da einige Dateien für den Tomcat-User nicht lesbar abgelegt wurden. Korrigieren Sie dies mit:
root@idp:~# chgrp -R $( getent group | grep ^tomcat | cut -d ":" -f1 ) /opt/shibboleth-idp/conf /opt/shibboleth-idp/credentials
root@idp:~# chmod -R g+r /opt/shibboleth-idp/conf /opt/shibboleth-idp/credentials
Außerdem müssen Log-Verzeichnis und Metadata-Verzeichnis für den Tomcat-User schreibbar gemacht werden:
root@idp:~# chown $( getent passwd | grep ^tomcat | cut -d ":" -f1 ):$( getent group | grep ^tomcat | cut -d ":" -f1 ) /opt/shibboleth-idp/logs /opt/shibboleth-idp/metadata
===== IdP Status URL freigeben =====
Das Monitoring-System des DFN-Vereins prüft standardmäßig die Status-Seite Ihres IdP und die Gültigkeitsdauer der SSL-Zertifikate im Webserver. Bitte geben Sie dafür die IdP-Status-Seite frei, wie hier beschrieben.
Zur Darstellung der Status-Seite muss eine aktuelle Version der Jakarta JSTL eingebunden werden:
# Download
root@idp:~# wget -P /opt/shibboleth-idp/edit-webapp/WEB-INF/lib/ https://repo.maven.apache.org/maven2/org/glassfish/web/jakarta.servlet.jsp.jstl/3.0.1/jakarta.servlet.jsp.jstl-3.0.1.jar
root@idp:~# wget -P /opt/shibboleth-idp/edit-webapp/WEB-INF/lib/ https://repo.maven.apache.org/maven2/jakarta/servlet/jsp/jstl/jakarta.servlet.jsp.jstl-api/3.0.0/jakarta.servlet.jsp.jstl-api-3.0.0.jar
# build erneut ausführen
root@idp:~# sudo /opt/shibboleth-idp/bin/build.sh -Didp.target.dir=/opt/shibboleth-idp
# Neustart Tomcat
root@idp:~# sudo systemctl restart tomcat10.service
* die IdP Status URL für Ihr eigenes Netz und das Monitoring-Netz des DFN freigegeben werden. Damit das DFN-AAI-Monitoring nur auf die Status-Seite zugreifen kann, erstellen Sie eine separates '''' Element mit der id ''**Status**AccessByIPAddress'':
Das default-'''' Element mit der id ''AccessByIPAddress'' (ohne "Status") bleibt bestehen. Mit diesem regeln Sie den Zugriff auf die Authentifizierungsdienste des IdP. Welche Properties dies betrifft, wird in ''conf/admin/admin.properties'' festgelegt.
Der Eintrag des separaten '''' Elements muss dann noch in ''conf/admin/admin.properties'' der Status-Seite zugewiesen werden:
idp.status.accessPolicy=StatusAccessByIPAddress
\\
===== Tomcat-Neustart und erster Test =====
Jetzt kann Tomcat neu gestartet werden:
root@idp:# systemctl restart tomcat10
Dabei lassen Sie am besten in drei Terminalfenstern den Tomcat- und die beiden relevanten IdP-Logs mitlaufen:
root@idp:# tail -f /var/log/tomcat10/catalina.DATUM.log /var/log/tomcat9/localhost.DATUM.log
root@idp:# tail -f /opt/shibboleth-idp/logs/idp-process.log
root@idp:# tail -f /opt/shibboleth-idp/logs/idp-warn.log
Finden sich dort keine Fehler, ist der IdP erfolgreich gestartet. Überprüfen Sie, ob Sie die Status-Seite sehen können:
root@idp:# curl https://idp.hochschule-XY.de/idp/status
====== Vorbereitung der IdP-Metadaten ======
Die Metadatenverwaltung der DFN-AAI kann die Metadaten Ihres IdP einlesen. Das verringert den Aufwand beim Eintragen der IdP-Metadaten. Ein Nachtragen, z.B. des Logos ist jedoch auch im Nachhinein in der Metadatenverwaltung möglich. Weitere Hilfe zum Ausfüllen der Metadaten finden Sie in unserer [[de:checklist|Checkliste]]. Wir empfehlen, vor dem initialen Registrieren des IdPs in ''./metadata/idp-metadata.xml'' die fehlenden Einträge zu aktivieren, damit die Felder in der Metadatenverwaltung ausgefüllt werden können. Im Folgenden sind nur die relevanten Ausschnitte angegeben:
...
hochschule-XY.de
XY University (Development)
Hochschule XY (Development)
Identity Provider of XY University
Identity Provider der Hochschule XY
https://idp-dev.hochschule-XY.de/idp/images/favicon.ico
https://idp-dev.hochschule-XY.de/idp/images/logo.png
...
...
...
Die Datei ''./metadata/idp-metadata.xml'' wird in der DFN-AAI nicht verwendet. Sie wird später weder vom IdP aktualisiert, noch von anderen Teilnehmern benötigt. Sie wird hier **ausschließlich für das initiale Einlesen in die Metadatenverwaltung** editiert und verwendet!
Der Inhalt dieser Datei wird per default unter der URL ''https://idp.example.org/idp/shibboleth'' ausgeliefert. Manche Dienstbetreiber gehen fälschlicherweise davon aus, dass die Daten darin ständig aktuell sind (wie es beim Shibboleth-Service-Provider ist). Deshalb sollte man diese URL abstellen, indem man in ''idp.properties'' den zugehörigen Eintrag leert:
#idp.entityID.metadataFile=%{idp.home}/metadata/idp-metadata.xml
idp.entityID.metadataFile=
Die Änderung wird nach dem nächsten Tomcat-Neustart wirksam.
{{tag>idp4 tutorial included-in-ansible}}