Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:shibidp:config-sealer [2020/04/14 09:51] Silke Meyerde:shibidp:config-sealer [2021/05/03 12:57] (aktuell) – [Secret Key Management] Silke Meyer
Zeile 1: Zeile 1:
 +<- de:shibidp:config-slo|Single Logout ^ de:shibidp:uebersicht|Überblick: Tutorial zur IdP-Inbetriebnahme ^ de:shibidp:config-encryption|Konfiguration des Verschlüsselungsalgorithmus ->
 +
 ====== Secret Key Management ====== ====== Secret Key Management ======
  
-<callout type="danger" title="Datenbank?"> +<callout color="#ff9900" title="Datenbank?"> 
-Wenn Sie Sessions und User Consent in einer [[de:shibidp:config-storage#session-informationen_und_user_consent|IdP-seitigen Datenbank]] ablegen, können Sie diesen Schritt überspringen.+Wenn Sie Sessions und User Consent in einer [[de:shibidp:config-storage#session-informationen_und_user_consent|IdP-seitigen Datenbank]] ablegen, können Sie diesen Schritt **überspringen**.
 </callout> </callout>
  
 In der Standardeinstellung speichert der Shibboleth IdP Informationen zu Sitzungen und User Consent clientseitig im Browser, in Cookies und ggf. HTML Local Storage ([[https://wiki.shibboleth.net/confluence/display/IDP4/SecretKeyManagement|siehe Shibboleth Wiki]]). Diese Daten werden durch Verschlüsselung geschützt. Die Keys, die dabei zum Einsatz kommen, sollten regelmäßig getauscht werden, wenn Sie die oben genannten Informationen //nicht// serverseitig speichern. In der Standardeinstellung speichert der Shibboleth IdP Informationen zu Sitzungen und User Consent clientseitig im Browser, in Cookies und ggf. HTML Local Storage ([[https://wiki.shibboleth.net/confluence/display/IDP4/SecretKeyManagement|siehe Shibboleth Wiki]]). Diese Daten werden durch Verschlüsselung geschützt. Die Keys, die dabei zum Einsatz kommen, sollten regelmäßig getauscht werden, wenn Sie die oben genannten Informationen //nicht// serverseitig speichern.
  
-Laden Sie das [[de:update-sealer-example|Beispiel-Script]] herunter und legen es nach+===== Key-Rollover automatisieren =====
  
-<code+<callout color="#ff9900" title="secrets.properties"
-/opt/shibboleth-idp/bin/update-sealer.sh+Die folgende Version des Skriptes geht davon aus, dass Sie sensible IdP-interne Informationen in der Datei ''credentials/secrets.properties'' liegen, wie es im IdP 4.x als Standard eingeführt wurde ([[de:shibidp:upgrade#auslagern_von_secrets|Doku]]). 
 +</callout> 
 + 
 +Legen Sie Beispiel-Skript herunter und legen es nach ''/opt/shibboleth-idp/bin/update-sealer.sh'' (Quelle: [[https://wiki.shibboleth.net/confluence/display/IDP4/SecretKeyManagement|Shibboleth Wiki]]). 
 + 
 +<code bash> 
 +#!/bin/bash 
 +  
 +set -e 
 +set -u 
 +   
 +# Default IDP_HOME if not already set 
 +if [ ! -d "${IDP_HOME:=/opt/shibboleth-idp}"
 +then 
 +    echo "ERROR: Directory does not exist: ${IDP_HOME}" >&
 +    exit 1 
 +fi 
 +  
 +function get_config { 
 + # Key to lookup (escape . for regex lookup) 
 + local KEY=${1:?"No key provided to look up value"
 + # Passed default value 
 + local DEFAULT="${2:-}" 
 + # Lookup key, strip spaces, replace idp.home with IDP_HOME value 
 + local RESULT 
 + if [[ ${KEY} == "idp.sealer.storePassword" ]]; then 
 + RESULT=$(sed -rn '/^'"${KEY//./\\.}"'\s*=/ { s|^[^=]*=(.*)\s*$|\1|; s|%\{idp\.home\}|'"${IDP_HOME}"'|g; p}' ${IDP_HOME}/credentials/secrets.properties | sed 's/^\ //') 
 + else 
 + RESULT=$(sed -rn '/^'"${KEY//./\\.}"'\s*=/ { s|^[^=]*=(.*)\s*$|\1|; s|%\{idp\.home\}|'"${IDP_HOME}"'|g; p}' ${IDP_HOME}/conf/idp.properties | sed 's/^\ //') 
 + fi 
 + # Set if no result with default - exit if no default 
 + echo "${RESULT:-${DEFAULT:?"No value in config and no default defined for: '${KEY}'"}}" 
 +
 +  
 +# Get config values 
 +## Official config items ## 
 +storefile=$(get_config idp.sealer.storeResource) 
 +versionfile=$(get_config idp.sealer.versionResource) 
 +storepass=$(get_config idp.sealer.storePassword) 
 +alias=$(get_config idp.sealer.aliasBase secret) 
 +## Extended config items ## 
 +count=$(get_config idp.sealer._count 30) 
 +# default cannot be empty - so "self" is the default (self is skipped for syncing) 
 +sync_hosts=$(get_config idp.sealer._sync_hosts ${HOSTNAME}) 
 +  
 +# Run the keygen utility 
 +${0%/*}/runclass.sh net.shibboleth.utilities.java.support.security.BasicKeystoreKeyStrategyTool \ 
 +    --storefile "${storefile}"
 +    --storepass "${storepass}"
 +    --versionfile "${versionfile}"
 +    --alias "${alias}"
 +    --count "${count}" 
 +  
 +# Display current version 
 +echo "INFO: $(tac "${versionfile}" | tr "\n" " ")" >&
 +  
 +for EACH in ${sync_hosts} 
 +do 
 +    if [ "${HOSTNAME}" == "${EACH}"
 +    then 
 +        echo "INFO: Host '${EACH}' is myself - skipping" >&
 +    elif ! ping -q -c 1 -W 3 ${EACH} >/dev/null 2>&
 +    then 
 +        echo "ERROR: Host '${EACH}' not reachable - skipping" >&
 +    else 
 +        # run scp in the background 
 +        scp "${storefile}" "${versionfile}" "${EACH}:${IDP_HOME}/credentials/"
 +    fi 
 +done
 </code> </code>
  
-Vergessen Sie nicht das Script ausführbar zu machen:+Machen Sie das Skript ausführbar:
  
-<code sh>+<code bash>
 root@idp:~# chmod 755 /opt/shibboleth-idp/bin/update-sealer.sh root@idp:~# chmod 755 /opt/shibboleth-idp/bin/update-sealer.sh
 </code> </code>
  
-Dieses Script liest die Sealer-relevanten Einstellungen aus ./conf/idp-properties und +Dieses Skript liest die Sealer-relevanten Einstellungen aus ''./conf/idp-properties'' und erzeugt damit neue Schlüsselwerte. Dazu legen Sie am besten einen täglichen Cronjob an:
-erzeugt damit neue Schlüsselwerte. Dazu legen Sie am besten einen täglichen Cron-Job an:+
  
 <file cron /etc/cron.d/shibboleth-idp> <file cron /etc/cron.d/shibboleth-idp>
Zeile 26: Zeile 95:
 </file> </file>
  
-Hinweis: falls Sie bei der IdP-Installation am Anfang ein zu einfaches Sealer-Passwort vergeben haben +===== Manuelle Neuvergabe von Sealer-Passwörtern ===== 
-können Sie dieses problemlos ändern indem Sie die Dateien ./credentials/sealer.* löschen und in +Falls Sie bei der IdP-Installation am Anfang ein zu einfaches Sealer-Passwort vergeben habenkönnen Sie dieses problemlos ändern: Löschen Sie die Dateien ''./credentials/sealer.*'' und vergeben Sie in ''./conf/idp.properties'' neue Passwörter (''idp.sealer.storePassword'' und ''idp.sealer.keyPassword''). 
-./conf/idp.properties neue Passwörter (idp.sealer.storePassword und idp.sealer.keyPassword) vergeben+Danach rufen Sie einfach obigen Cronjob manuell auf. Das Skript erstellt die fehlenden Dateien unter Verwendung der neuen Passwörter neu. Achtung: **Sonderzeichen können in Javas .properties-Dateien zu Problemen führen**Daher raten wir davon ab, bei den Passwörtern Sonderzeichen zu verwenden.
-Danach rufen Sie einfach obigen Cron-Job manuell auf, das Script erstellt die fehlenden Dateien unter +
-Verwendung der neuen Passwörter wieder neu. Achten Sie nur darauf dass Sie beim Passwort keine Sonderzeichen verwenden da diese erfahrungsgemäß in Java-properties-Dateien Probleme machen können. +
- +
-Referenz zum Shib-Wiki: https://wiki.shibboleth.net/confluence/display/IDP30/SecretKeyManagement +
- +
-=== Aufnahme in DFN-AAI-Produktivumgebung === +
-Die Basis-Konfiguration des IdPs ist damit abgeschlossen. Für die Inbetriebnahme des IdP beachten Sie bitte die Hinweise und Empfehlungen unter [[de:production|Produktivbetrieb]].+
  
-** Weiter geht es mit den [[de:shibidp3attributes|Attribut-Konfigurationen in der DFN-AAI]] **+{{tag>idp4 tutorial not-included-in-ansible}}
  • Zuletzt geändert: vor 4 Jahren