第 3 章 更新更新框架元数据文件


默认情况下,更新框架(TUF)元数据文件会在 Securesign 实例的部署日期起 52 周后过期。您至少必须每 52 周更新一次 TUF 元数据文件,然后再过期。红帽建议更新元数据文件,超过一年一次。

此流程指导您刷新根和非 root 元数据文件。

先决条件

  • 安装在 Red Hat OpenShift Container Platform 上运行的 RHTAS operator。
  • 正在运行的 Securesign 实例。
  • 安装了 oc 二进制文件的工作站。

流程

  1. tuftool 二进制文件从 OpenShift 集群下载到您的工作站。

    重要

    tuftool 二进制文件仅适用于 Linux 操作系统。

    1. 在主页中,单击 ? 图标,单击 Command line tools,转至 tuftool 下载部分,然后点击您的平台的链接。
    2. 在工作站上打开一个终端,解压缩二进制 .gz 文件,并设置 execute 位:

      Example

      $ gunzip tuftool-amd64.gz
      $ chmod +x tuftool-amd64
      Copy to Clipboard Toggle word wrap

    3. 将二进制文件移到 $PATH 环境中的位置:

      Example

      $ sudo mv tuftool-amd64 /usr/local/bin/tuftool
      Copy to Clipboard Toggle word wrap

  2. 从命令行登录到 OpenShift:

    语法

    oc login --token=TOKEN --server=SERVER_URL_AND_PORT
    Copy to Clipboard Toggle word wrap

    Example

    $ oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
    Copy to Clipboard Toggle word wrap

    注意

    您可以从 OpenShift Web 控制台找到用于命令行的登录令牌和 URL。登录 OpenShift Web 控制台。单击您的用户名,然后单击 Copy login command。如果被要求,再次提供您的用户名和密码,然后单击 Display Token 以查看该命令。

  3. 切换到 RHTAS 项目:

    Example

    $ oc project trusted-artifact-signer
    Copy to Clipboard Toggle word wrap

  4. 配置 shell 环境:

    Example

    $ export WORK="${HOME}/trustroot-example"
    $ export ROOT="${WORK}/root/root.json"
    $ export KEYDIR="${WORK}/keys"
    $ export INPUT="${WORK}/input"
    $ export TUF_REPO="${WORK}/tuf-repo"
    $ export TUF_SERVER_POD="$(oc get pod --selector=app.kubernetes.io/component=tuf --no-headers -o custom-columns=":metadata.name")"
    
    $ export TIMESTAMP_EXPIRATION="in 10 days"
    $ export SNAPSHOT_EXPIRATION="in 26 weeks"
    $ export TARGETS_EXPIRATION="in 26 weeks"
    $ export ROOT_EXPIRATION="in 26 weeks"
    Copy to Clipboard Toggle word wrap

    根据您的要求设置过期持续时间。

  5. 创建临时 TUF 目录结构:

    Example

    $ mkdir -p "${WORK}/root/" "${KEYDIR}" "${INPUT}" "${TUF_REPO}"
    Copy to Clipboard Toggle word wrap

  6. 将 TUF 内容下载到临时 TUF 目录结构中:

    Example

    $ oc extract --to "${KEYDIR}/" secret/tuf-root-keys
    $ oc cp "${TUF_SERVER_POD}:/var/www/html" "${TUF_REPO}"
    $ cp "${TUF_REPO}/root.json" "${ROOT}"
    Copy to Clipboard Toggle word wrap

  7. 您可以在一个命令中更新时间戳、快照和目标元数据:

    Example

    $ tuftool update \
      --root "${ROOT}" \
      --key "${KEYDIR}/timestamp.pem" \
      --key "${KEYDIR}/snapshot.pem" \
      --key "${KEYDIR}/targets.pem" \
      --timestamp-expires "${TIMESTAMP_EXPIRATION}" \
      --snapshot-expires "${SNAPSHOT_EXPIRATION}" \
      --targets-expires "${TARGETS_EXPIRATION}" \
      --outdir "${TUF_REPO}" \
      --metadata-url "file://${TUF_REPO}"
    Copy to Clipboard Toggle word wrap

    注意

    您还可以在 TUF 元数据文件的子集上运行 TUF 元数据更新。例如,timestamp.json 元数据文件会超过其他元数据文件的频率。因此,您只能运行以下命令来更新时间戳元数据文件:

    $ tuftool update \
      --root "${ROOT}" \
      --key "${KEYDIR}/timestamp.pem" \
      --timestamp-expires "${TIMESTAMP_EXPIRATION}" \
      --outdir "${TUF_REPO}" \
      --metadata-url "file://${TUF_REPO}"
    Copy to Clipboard Toggle word wrap
  8. 只有在要过期时才更新 root 过期日期:

    Example

    $ tuftool root expire "${ROOT}" "${ROOT_EXPIRATION}"
    Copy to Clipboard Toggle word wrap

    注意

    如果 root 文件没有接近过期,您可以跳过这一步。

  9. 更新根版本:

    Example

    $ tuftool root bump-version "${ROOT}"
    Copy to Clipboard Toggle word wrap

  10. 再次为 root 元数据文件签名:

    Example

    $ tuftool root sign "${ROOT}" -k "${KEYDIR}/root.pem"
    Copy to Clipboard Toggle word wrap

  11. 设置新的 root 版本,并复制 root 元数据文件:

    Example

    $ export NEW_ROOT_VERSION=$(cat "${ROOT}" | jq -r ".signed.version")
    $ cp "${ROOT}" "${TUF_REPO}/root.json"
    $ cp "${ROOT}" "${TUF_REPO}/${NEW_ROOT_VERSION}.root.json"
    Copy to Clipboard Toggle word wrap

  12. 将这些更改上传到 TUF 服务器:

    Example

    $ oc rsync "${TUF_REPO}/" "${TUF_SERVER_POD}:/var/www/html"
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat