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/10/14 11:57] Silke Meyerde:shibidp:config-sealer [2024/07/26 10:02] (aktuell) – [Secret Key Management] Link aktualisiert Doreen Liebenau
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 color="#ff9900" 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://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199501624/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.
  
 ===== Key-Rollover automatisieren ===== ===== Key-Rollover automatisieren =====
  
-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]]).+<callout color="#ff9900" title="secrets.properties"> 
 +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> 
 + 
 +Laden Sie das Beispiel-Skript herunter und legen es nach ''/opt/shibboleth-idp/bin/update-sealer.sh'' (Quelle: [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199501624/SecretKeyManagement|Shibboleth Wiki]]).
  
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
-  + 
-set -e+set -e 
 set -u set -u
-  +
 # Default IDP_HOME if not already set # Default IDP_HOME if not already set
 if [ ! -d "${IDP_HOME:=/opt/shibboleth-idp}" ] if [ ! -d "${IDP_HOME:=/opt/shibboleth-idp}" ]
Zeile 23: Zeile 29:
     exit 1     exit 1
 fi fi
- +
 function get_config { function get_config {
- # Key to lookup (escape . for regex lookup) +    # Key to lookup (escape . for regex lookup) 
- local KEY=${1:?"No key provided to look up value"+    local KEY=${1:?"No key provided to look up value"
- # Passed default value +    # Passed default value 
- local DEFAULT="${2:-}" +    local DEFAULT="${2:-}" 
- # Lookup key, strip spaces, replace idp.home with IDP_HOME value +    # Lookup key, strip spaces, replace idp.home with IDP_HOME value 
- local RESULT +    local RESULT=$(sed -rn '/^'"${KEY//./\\.}"'\s*=/ { s|^[^=]*=(.*)\s*$|\1|; s|%\{idp\.home\}|'"${IDP_HOME}"'|g; p}' ${IDP_HOME}/conf/idp.properties) 
- if [[ ${KEY} == "idp.sealer.storePassword" ]]; then +    if [ -z "$RESULT" ] 
- RESULT=$(sed -rn '/^'"${KEY//./\\.}"'\s*=/ { s|^[^=]*=(.*)\s*$|\1|; s|%\{idp\.home\}|'"${IDP_HOME}"'|g; p}' ${IDP_HOME}/credentials/secrets.properties | sed 's/^\ //'+    then 
- else +       local RESULT=$(sed -rn '/^'"${KEY//./\\.}"'\s*=/ { s|^[^=]*=(.*)\s*$|\1|; s|%\{idp\.home\}|'"${IDP_HOME}"'|g; p}' ${IDP_HOME}/credentials/secrets.properties) 
- RESULT=$(sed -rn '/^'"${KEY//./\\.}"'\s*=/ { s|^[^=]*=(.*)\s*$|\1|; s|%\{idp\.home\}|'"${IDP_HOME}"'|g; p}' ${IDP_HOME}/conf/idp.properties | sed 's/^\ //'+    fi   
- fi +    # Set if no result with default - exit if no default 
- # Set if no result with default - exit if no default +    echo "${RESULT:-${DEFAULT:?"No value in config and no default defined for: '${KEY}'"}}"
- echo "${RESULT:-${DEFAULT:?"No value in config and no default defined for: '${KEY}'"}}"+
 } }
- +
 # Get config values # Get config values
 ## Official config items ## ## Official config items ##
 +
 storefile=$(get_config idp.sealer.storeResource) storefile=$(get_config idp.sealer.storeResource)
 versionfile=$(get_config idp.sealer.versionResource) versionfile=$(get_config idp.sealer.versionResource)
Zeile 50: Zeile 56:
 # default cannot be empty - so "self" is the default (self is skipped for syncing) # default cannot be empty - so "self" is the default (self is skipped for syncing)
 sync_hosts=$(get_config idp.sealer._sync_hosts ${HOSTNAME}) sync_hosts=$(get_config idp.sealer._sync_hosts ${HOSTNAME})
-  +# Run the keygen utility  
-# Run the keygen utility +${0%/*}/seckeygen.sh \
-${0%/*}/runclass.sh net.shibboleth.utilities.java.support.security.BasicKeystoreKeyStrategyTool \+
     --storefile "${storefile}" \     --storefile "${storefile}" \
     --storepass "${storepass}" \     --storepass "${storepass}" \
Zeile 58: Zeile 63:
     --alias "${alias}" \     --alias "${alias}" \
     --count "${count}"     --count "${count}"
-  
 # Display current version # Display current version
 echo "INFO: $(tac "${versionfile}" | tr "\n" " ")" >&2 echo "INFO: $(tac "${versionfile}" | tr "\n" " ")" >&2
-  
 for EACH in ${sync_hosts} for EACH in ${sync_hosts}
 do do
Zeile 71: Zeile 74:
         echo "ERROR: Host '${EACH}' not reachable - skipping" >&2         echo "ERROR: Host '${EACH}' not reachable - skipping" >&2
     else     else
-        # run scp in the background+ # run scp in the background 
         scp "${storefile}" "${versionfile}" "${EACH}:${IDP_HOME}/credentials/" &         scp "${storefile}" "${versionfile}" "${EACH}:${IDP_HOME}/credentials/" &
     fi     fi
Zeile 93: Zeile 96:
 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 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.
  
-Weiter geht es mit der [[de:shibidp:config-encryption|Konfiguration des Verschlüsselungsalgorithmus]]. +{{tag>idp4 tutorial not-included-in-ansible}}
- +
-{{tag>idp4 tutorial}}+
  • Zuletzt geändert: vor 5 Jahren