10.3. 轮转 Tang 服务器密钥并更新客户端上的绑定
为安全起见,轮转 Tang 服务器密钥并定期更新客户端上的现有绑定。轮转它们的确切间隔取决于您的应用程序、密钥大小以及机构策略。
或者,您可以使用 nbde_server
RHEL 系统角色来轮转 Tang 密钥。如需更多信息,请参阅 使用 nbde_server 系统角色来设置多个 Tang 服务器。
先决条件
- Tang 服务器正在运行。
-
clevis
和clevis-luks
软件包已安装在您的客户端上。 -
请注意,RHEL 8.2 中已引入了
clevis luks list
、clevis luks report
和clevis luks regen
。
流程
重命名
/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
检查是否重命名了,是否隐藏了 Tang 服务器中的所有密钥:
# ls -l total 0
使用
/usr/libexec/tangd-keygen
命令,在Tang 服务器上的/var/db/tang
中生成新的密钥:# /usr/libexec/tangd-keygen /var/db/tang # ls /var/db/tang 3ZWS6-cDrCG61UPJS2BMmPU4I54.jwk zyLuX6hijUy_PSeUEFDi7hi38.jwk
检查您的 Tang 服务器是否可以显示新密钥对的签名密钥,例如:
# tang-show-keys 7500 3ZWS6-cDrCG61UPJS2BMmPU4I54
在 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]
要为新密钥重新生成 LUKS 元数据,在上一个命令提示时按
y
,或使用clevis luks regen
命令:# clevis luks regen -d /dev/sda2 -s 1
当您确定所有旧客户端都使用新密钥时,您可以从 Tang 服务器中删除旧密钥,例如:
# cd /var/db/tang # rm .*.jwk
在客户端仍在使用旧密钥时删除旧密钥可能会导致数据丢失。如果您意外删除了这些密钥,请在客户端上使用 clevis luks regen
命令,并手动提供您的 LUKS 密码。
其它资源
-
tang-show-keys (
1)、clevis-luks-list (
1)、clevis-luks-report (1)
和您系统上的clevis-luks-regen (1)
手册页