Red Hat Training

A Red Hat training course is available for RHEL 8

11.4. 轮转 Tang 服务器密钥并更新客户端上的绑定

使用以下步骤轮转 Tang 服务器密钥,并在客户端上更新现有的绑定。您轮转它们的确切间隔取决于您的应用程序、密钥大小以及机构策略。

或者,您可以使用 nbde_server RHEL 系统角色轮转 Tang 密钥。如需更多信息,请参阅使用 nbde_server 系统角色来设置多个 Tang 服务器

先决条件

  • Tang 服务器正在运行。
  • clevisclevis-luks 软件包安装在您的客户端上。
  • 请注意,RHEL 8.2 中引进了clevis luks list、c levis luks 报告和 clevis luks regen

流程

  1. 重命名 /var/db/tang 键数据库目录中的所有键,使其具有一个前导 .,以将它们从公告中隐藏。请注意,以下示例中的文件名与 Tang 服务器密钥数据库目录中的唯一文件名不同:

    # cd /var/db/tang
    # ls -l
    -rw-r--r--. 1 root root 349 Feb  7 14:55 UV6dqXSwe1bRKG3KbJmdiR020hY.jwk
    -rw-r--r--. 1 root root 354 Feb  7 14:55 y9hxLTQSiSB5jSEGWnjhY8fDTJU.jwk
    # mv UV6dqXSwe1bRKG3KbJmdiR020hY.jwk .UV6dqXSwe1bRKG3KbJmdiR020hY.jwk
    # mv y9hxLTQSiSB5jSEGWnjhY8fDTJU.jwk .y9hxLTQSiSB5jSEGWnjhY8fDTJU.jwk
  2. 检查是否重命名了 Tang 服务器公告中的所有键:

    # ls -l
    total 0
  3. 使用 Tang 服务器上的 /var/db/tang d-keygen 命令生成 新密钥:

    # /usr/libexec/tangd-keygen /var/db/tang
    # ls /var/db/tang
    3ZWS6-cDrCG61UPJS2BMmPU4I54.jwk zyLuX6hijUy_PSeUEFDi7hi38.jwk
  4. 检查您的 Tang 服务器是否从新密钥对公告签名密钥,例如:

    # tang-show-keys 7500
    3ZWS6-cDrCG61UPJS2BMmPU4I54
  5. 在 NBDE 客户端上,使用 clevis luks report 命令检查 Tang 服务器公告的密钥是否保持不变。您可以使用 clevis luks list 命令标识带有相关绑定的插槽,例如:

    # clevis luks list -d /dev/sda2
    1: tang '{"url":"http://tang.srv"}'
    # clevis luks report -d /dev/sda2 -s 1
    ...
    Report detected that some keys were rotated.
    Do you want to regenerate luks metadata with "clevis luks regen -d /dev/sda2 -s 1"? [ynYN]
  6. 要为新键重新生成 LUKS 元数据,或者在上一个命令提示时按 y,或使用 clevis luks regen 命令:

    # clevis luks regen -d /dev/sda2 -s 1
  7. 当您确定所有旧客户端都使用新密钥时,您可以从 Tang 服务器中删除旧密钥,例如:

    # cd /var/db/tang
    # rm .*.jwk
警告

在客户端仍在使用旧密钥时删除旧密钥可能会导致数据丢失。如果您意外删除了这些密钥,请在客户端上使用 clevis luks regen 命令,并手动提供您的 LUKS 密码。

其它资源

  • tang-show-keys(1)、 clevis-luks-list(1)、 c levis-luks-report(1)和 clevis-luks-regen(1) man page