10.9. 使用 PKCS modprobe pin 配置 LUKS 加密卷的解锁


您可以使用与 PKCS modprobe 兼容的设备配置 LUKS 加密卷的解锁,可以是智能卡或硬件安全模块(HSM)。

使用 Clevis PKCS modprobe pin 自动解锁加密卷也需要在 /etc/crypttab 文件中更改,该文件将 systemd 管理器配置为使用 AF_UNIX 套接字等待键phrase 解锁卷,而不是通过控制台提示用户。

Clevis PKCS modprobe 单元文件在 /run/systemd/clevis-pkcs11.sock 文件中配置套接字,以发送和接收有关磁盘解锁的信息。对于通过 Clevis PKCS modprobe pin 解锁的磁盘,您必须将套接字文件配置为密钥文件。

先决条件

  • PKCSGRESS 设备已经配置并可以访问。
  • 已安装 clevis-pin-pkcs11 软件包。
  • clevis luks bind 命令至少有一个可用的 LUKS 密码插槽。

步骤

  1. 识别 PBD 的 LUKS 加密卷。在以下示例中,块设备是指 /dev/sda2

    # lsblk
    NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    sda                                             8:0    0    12G  0 disk
    ├─sda1                                          8:1    0     1G  0 part  /boot
    └─sda2                                          8:2    0    11G  0 part
      └─luks-40e20552-2ade-4954-9d56-565aa7994fb6 253:0    0    11G  0 crypt
        ├─rhel-root                               253:0    0   9.8G  0 lvm   /
        └─rhel-swap                               253:1    0   1.2G  0 lvm   [SWAP]
    Copy to Clipboard
  2. 确定您要用来解锁卷的 PKCShmac 设备的 URI,例如:

    $ pkcs11-tool -L | grep uri
    uri            	: pkcs11:model=PKCS%2315%20emulated;manufacturer=piv_II;serial=42facd1f749ece7f;token=clevis
    uri            	: pkcs11:model=PKCS%2315%20emulated;manufacturer=OpenPGP%20project;serial=000f06080f4f;token=OpenPGP%20card%20%28User%20PIN%29
    Copy to Clipboard
  3. 使用 clevis luks bind 命令将卷绑定到 PKCSGRESS 设备,例如:

    # clevis luks bind -d /dev/sda2 pkcs11 '{"uri":"pkcs11:model=PKCS%2315%20emulated;manufacturer=OpenPGP%20project;serial=000f06080f4f;token=OpenPGP%20card%20%28User%20PIN%29;id=%03;object=Authentication%20key;type=public"}'
    …
    Do you wish to initialize /dev/sda2? [yn] y
    Enter existing LUKS password:
    Copy to Clipboard

    这个命令执行以下步骤:

    1. 使用与 LUKS 主密钥相同的无序状态测量法创建新的密钥。
    2. 使用 Clevis 加密新密钥.
    3. 将 Clevis JWE 对象存储在 LUKS2 标头令牌中,或者使用 LUKSMeta(如果使用非默认的 LUKS1 标头)。
    4. 启用与 LUKS 一起使用的新密钥。
  4. (可选):如果您的场景需要指定要使用的模块,请添加 module-path URI 参数:

    # clevis luks bind -d /dev/sda2 pkcs11 '{"uri":"pkcs11:module-path=/usr/lib64/libykcs11.so.2";model=PKCS%2315%20emulated;manufacturer=OpenPGP%20project;serial=000f06080f4f;token=OpenPGP%20card%20%28User%20PIN%29;id=%03;object=Authentication%20key;type=public}'
    Copy to Clipboard
  5. 启用 clevis-luks-pkcs11-askpass.socket 单元:

    # systemctl enable --now clevis-luks-pkcs11-askpass.socket
    Copy to Clipboard
  6. 在文本编辑器中打开 /etc/crypttab 文件,并识别包含您要被 PKCS modprobe pin 解锁的 LUKS 加密卷的行,例如:

    luks-6e38d5e1-7f83-43cc-819a-7416bcbf9f84 UUID=6e38d5e1-7f83-43cc-819a-7416bcbf9f84 - -
    Copy to Clipboard
  7. 使用 /run/systemd/clevis-pkcs11.sock 文件路径和 keyfile-timeout 选项替换短划线:

    luks-6e38d5e1-7f83-43cc-819a-7416bcbf9f84 UUID=6e38d5e1-7f83-43cc-819a-7416bcbf9f84 /run/systemd/clevis-pkcs11.sock keyfile-timeout=30s
    Copy to Clipboard

    keyfile-timeout 选项为发生解锁错误,系统需要通过控制台手动输入密码短语时提供 fall-through 机制。

  8. 保存更改,退出编辑器。
  9. 要启用早期引导系统来处理磁盘绑定(解锁根文件系统),请在已安装的系统上使用 dracut 工具:

    # dracut -fv --regenerate-all
    Copy to Clipboard
  10. 重新启动系统。

    在以下引导过程中,系统会提示输入 PKCS modprobe 设备 PIN,并仅在输入正确的 PIN 时解密相应的加密的磁盘。

验证

  1. 您可以使用以下命令来加密和解密文本信息,而不是手动测试引导过程:

    # echo "top secret" | clevis encrypt pkcs11 '{"uri":"pkcs11:module-path=/usr/lib64/libykcs11.so.2?pin-value=<PIN>"}' | clevis decrypt
    Copy to Clipboard

    将 & lt;PIN& gt; 替换为 PIN 值。您必须输入这个 PIN 值来解密消息。

  2. 要验证 Clevis JWE 对象是否已成功放入 LUKS 标头中,请使用 clevis luks list 命令,例如:

    # clevis luks list -d /dev/sda2
    1: pkcs11 '{"uri": "pkcs11:model=PKCS%2315%20emulated;manufacturer=piv_II;
    serial=0a35ba26b062b9c5;token=clevis;id=%02;object=Encryption%20Key?
    module-path=/usr/lib64/libykcs11.so.2"}'
    Copy to Clipboard
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat