轮替软件包验证证书

本页面介绍了如何轮替 Google Distributed Cloud (GDC) 气隙设备中用于软件包验证的根证书授权机构

GDC 软件包验证使用根证书授权机构 (CA) 来验证发布密钥证书。因此,定期轮换根 CA 证书至关重要。如果发布通知或升级过程中可能显示的警告消息指示您轮换根 CA,您必须轮换根 CA。

准备工作

如需轮替软件包验证证书,您必须拥有必要的身份和访问权限角色:

  • 确保您拥有对 package-validation-root-certs ConfigMap 的写入权限。
  • 请让您的 Security Admin 向您授予 Upgrade Debugger (upgrade-debugger-cp) 角色。

需要验证证书轮替

在执行操作之前,请验证是否需要轮替软件包验证证书:

  1. 设置 KUBECONFIG 环境变量:

    $ KUBECONFIG=PATH_TO_KUBECONFIG_FILE
    

    PATH_TO_KUBECONFIG_FILE 替换为通过在根管理员集群中运行 gdcloud auth login 获取的 kubeconfig 文件的路径。

  2. 通过将当前信任锚与最新信任锚进行比较,确定是否需要升级。系统会将 harbor-system/package-validation-root-certs 中的 ConfigMap 数据与本地信任锚进行比较:

    $ 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!
    

在设备上执行证书轮替和升级

执行以下步骤,以轮换根管理员集群中位于 harbor-system/package-validation-root-certsConfigMap 对象。基础设施运维人员需要对 ConfigMap 拥有写入权限。

  1. 创建以下变量并为其分配值:

    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
    

    USER_NAME 替换为 IO 用户名。

  2. 创建目标文件夹,用于存放证书轮换流程的输出文件:

    mkdir -p "${TARGET_FOLDER}"
    
  3. 更新并替换 LATEST_TRUST_ANCHOR 的值:

      cat <<EOF  > "${OUTPUT}"
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: ${CONFIGMAP_NAME}
        namespace: ${NAMESPACE}
      data:
        ca.crt: |
      $(sed 's/^/    /' "${LATEST_TRUST_ANCHOR_CA_FILE}")
      EOF
    
  4. 使用 kubectl 应用新配置:

      kubectl apply -f ${OUTPUT}
    
  5. 确保新应用的 ca.crt 位于 ConfigMap 中:

      kubectl describe configmap package-validation-root-certs -n harbor-system
    

这有助于在 package-validation-root-cert 中轮替新证书。