Skip to main content
通过 Lager Box 上的 hsm Net 检查硬件安全模块(HSM),并在其上配置密钥。私钥由 HSM 生成并保存在 HSM 中。Lager 只读取公钥和签名。

语法

如果不给出命令,Lager 会列出 Box 上的 hsm Net:

命令


登录

需要登录的命令使用 HSM 上的一个认证密钥。用 --auth-key-id 给出密钥 ID。默认值是 1,即出厂认证密钥。 Lager 按以下顺序读取密码:
  1. 如果给出 --password-stdin,读取 stdin 的第一行。
  2. LAGER_HSM_PASSWORD 环境变量。
  3. 不显示输入内容的提示符。
没有 --password 选项。命令行上的值会留在 shell 历史中,其他用户也可以在进程列表中看到它。
如果您的计算机与 Box 之间的网络不可信,只能通过 Tailscale 或 SSH 隧道使用 Box。CLI 通过明文 HTTP 将密码发送到 Box API,这与其他所有 Box API 流量相同。Lager 不保存密码,Box 会从日志中去掉密码。
出厂登录是认证密钥 1,密码为 password。在 HSM 上存放重要密钥之前,请先替换这个密钥。

lager hsm NET_NAME info

显示固件版本、序列号、部件号和审计日志用量。此命令不登录。

选项

输出


让 HSM 上的 LED 闪烁。用此命令在多台 HSM 中找到其中一台。

lager hsm NET_NAME objects

列出认证密钥可以看到的 HSM 对象。

输出


lager hsm NET_NAME generate

在 HSM 上生成非对称密钥。私钥不会离开 HSM。命令以 PEM 格式打印公钥。 默认能力是:EC 密钥为 sign-ecdsa,Ed25519 密钥为 sign-eddsa。认证密钥必须具有您赋予新密钥的每一项能力。
CLI 目前不能生成 RSA 密钥。HSM 生成一个 RSA 密钥需要几秒到一分多钟。这超过了 Box 允许单次设备调用运行的时长,超过后 Box 会认为设备已卡住。要生成 RSA 密钥,请在 lager python 脚本中使用 Python API。CLI 可以用 HSM 上已有的 RSA 密钥签名。

lager hsm NET_NAME pubkey

以 PEM 格式打印非对称密钥的公钥。

lager hsm NET_NAME sign

用非对称密钥对数据签名。命令以十六进制打印签名,或将原始签名写入文件。 --data-file 和 --data-hex 必须且只能给出一个。HSM 自己计算数据的哈希,因此请给出消息本身,而不是摘要。ECDSA 签名采用 DER 编码。

lager hsm NET_NAME delete

从 HSM 删除一个对象。此操作无法撤销。

lager hsm NET_NAME reset

擦除 HSM 上的所有对象并恢复出厂登录。此操作无法撤销。HSM 会重启,命令会等到它再次应答。 确认提示也读取 stdin。因此,带 --password-stdin 的 delete 和 reset 还需要 --yes。

创建 HSM Net

hsm Net 只有一个通道 0。地址中带有 HSM 的序列号,因此连接多台 HSM 时,Net 始终对应同一台设备。

Python API

lager python 脚本从 Net 获取驱动。每个需要登录的方法都以关键字参数接收 auth_key_id 和 password。
用 lager python script.py --box my-lager-box --passenv LAGER_HSM_PASSWORD 运行脚本。--passenv 选项使密码不出现在命令行上。

支持的硬件

故障排除