Zertifikat für die Paketvalidierung aktualisieren

In diesem Dokument wird beschrieben, wie Sie die Root-Zertifizierungsstelle (Certificate Authority, CA) aktualisieren, die für die Paketvalidierung in der Google Distributed Cloud (GDC)-Appliance mit Air Gap verwendet wird.

Bei der Validierung von GDC-Paketen wird eine Root-Zertifizierungsstelle (CA) verwendet, um Release-Schlüsselzertifikate zu validieren. Sie müssen diese Root-Zertifizierungsstelle aktualisieren, wenn dies in einer Release-Mitteilung erforderlich ist oder wenn Sie bei einem Systemupgrade eine Warnmeldung sehen.

Hinweis

Um das Zertifikat für die Paketvalidierung zu aktualisieren, benötigen Sie die erforderlichen Identitäts- und Zugriffsrollen:

  • Prüfen Sie, ob Sie Schreibzugriff auf die ConfigMap harbor-system/package-validation-root-certs haben.
  • Bitten Sie Ihren Sicherheitsadministrator, Ihnen die Rolle „Debugger aktualisieren“ (upgrade-debugger-cp) zuzuweisen.

Prüfen, ob ein Zertifikatsupgrade erforderlich ist

Prüfen Sie, ob ein Upgrade des Zertifikats zur Paketvalidierung erforderlich ist, bevor Sie den Vorgang ausführen. Vergleichen Sie dazu die aktive ConfigMap in Ihrem Cluster mit dem neuesten Staging-Root-Zertifikat im Upgrade-Bundle:

  1. Legen Sie die Umgebungsvariable KUBECONFIG fest:

    $ KUBECONFIG=PATH_TO_KUBECONFIG_FILE
    

    Ersetzen Sie PATH_TO_KUBECONFIG_FILE durch den Pfad zur Datei kubeconfig, die Sie durch Ausführen von gdcloud auth login im Administratorcluster des Stammclusters erhalten haben.

  2. Ermitteln Sie, ob ein Upgrade erforderlich ist, indem Sie den aktuellen Vertrauensanker mit dem neuesten Vertrauensanker vergleichen. Die ConfigMap-Daten unter harbor-system/package-validation-root-certs werden mit dem lokalen Trust-Anchor verglichen:

    $ CURRENT_TRUST_ANCHOR=$(kubectl  --kubeconfig=$KUBECONFIG get cm package-validation-root-certs -n harbor-system -o jsonpath='{.data.ca\.crt}')
    
    $ LATEST_TRUST_ANCHOR=$(cat /root/release/staging_root_ca_certificate.crt)
    
    $ diff <( echo "$CURRENT_TRUST_ANCHOR" ) <( echo "$LATEST_TRUST_ANCHOR" ) && echo trust anchors are same  || echo trust anchors are different, upgrade required!
    

Zertifikat aktualisieren

Wenn ein Upgrade erforderlich ist, aktualisieren Sie das ConfigMap-Objekt unter harbor-system/package-validation-root-certs im Stammadministratorcluster. Sie benötigen Schreibzugriff auf ConfigMap, um diese Aufgabe auszuführen.

  1. Legen Sie die Umgebungsvariable KUBECONFIG fest:

    $ KUBECONFIG=PATH_TO_KUBECONFIG_FILE
    

    Ersetzen Sie PATH_TO_KUBECONFIG_FILE durch den Pfad zur Datei kubeconfig, die Sie durch Ausführen von gdcloud auth login im Administratorcluster des Stammclusters erhalten haben.

  2. Erstellen Sie die folgenden Variablen und weisen Sie ihnen Werte zu:

    USERNAME=USER_NAME #IO
    TARGET_FOLDER=/tmp/${USERNAME}
    OUTPUT="${TARGET_FOLDER}/package-validation-root-certs.yaml"
    LATEST_TRUST_ANCHOR_CA_FILE=/root/release/staging_root_ca_certificate.crt
    CONFIGMAP_NAME=package-validation-root-certs
    NAMESPACE=harbor-system
    

    Ersetzen Sie USER_NAME durch den AA-Nutzernamen.

  3. Erstellen Sie den Zielordner, der die Ausgabedateien aus dem Zertifikatsaktualisierungsprozess enthält:

    mkdir -p "${TARGET_FOLDER}"
    
  4. Rufen Sie den aktuellen Trust-Anchor ab und speichern Sie ihn in einer lokalen temporären Datei:

    CURRENT_TRUST_ANCHOR=$(kubectl  --kubeconfig=$KUBECONFIG get configmap "${CONFIGMAP_NAME}" -n "${NAMESPACE}" -o jsonpath="{.data.ca\.crt}" )
    CURRENT_TRUST_ANCHOR_CA_FILE=$(mktemp)
    echo "$CURRENT_TRUST_ANCHOR" > "${CURRENT_TRUST_ANCHOR_CA_FILE}"
    
  5. Generieren Sie die aktualisierte Trust-Anchor-Datei:

    cat <<EOF  > "${OUTPUT}"
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ${CONFIGMAP_NAME}
      namespace: ${NAMESPACE}
    data:
      ca.crt: |
    $(sed 's/^/    /' "${LATEST_TRUST_ANCHOR_CA_FILE}")
    $(sed 's/^/    /' "${CURRENT_TRUST_ANCHOR_CA_FILE}")
    EOF
    
  6. Prüfen Sie, ob der Trust-Anker korrekt aktualisiert wurde:

    Der Trust-Anchor muss sowohl das aktuelle als auch das neueste Trust-Anchor-Zertifikat enthalten.

    $ cat "${OUTPUT}"
    apiVersion: v1
    data:
      ca.crt: |
        -----BEGIN CERTIFICATE-----
        (certificate content)
        -----END CERTIFICATE-----
        -----BEGIN CERTIFICATE-----
        (certificate content)
        -----END CERTIFICATE-----
        (other certificate)
    kind: ConfigMap
    metadata:
      name: package-validation-root-certs
      namespace: harbor-system
    
  7. Wenden Sie die neue Konfiguration mit kubectl an:

      kubectl --kubeconfig=$KUBECONFIG apply -f ${OUTPUT}
    
  8. Prüfen Sie, ob die neu angewendete ca.crt in ConfigMap vorhanden ist:

      kubectl --kubeconfig=$KUBECONFIG describe configmap package-validation-root-certs -n harbor-system
    

Dadurch wird ein neues Zertifikat in package-validation-root-cert aktualisiert.