跳转到内容
搜索文档

配置

最后更新 查看 MarkdownAgent 设置

要开始使用 PKCS#11 token,您需要使用私钥、PIN 和 token 标签对其进行初始化。相关说明因硬件设备而异,您应遵循供应商提供的说明。您还需要找到 module(一个共享对象文件,.so)的路径。初始化设备后,您可以查询它以检查 token 标签:

pkcs11-tool --module <module path> --list-token-slots

您还需要检查所导入(或生成)私钥的标签。运行以下命令并查找 Private Key Object

pkcs11-tool --module <module path> --pin <pin> \
    --list-token-slots --login --list-objects

现在您已拥有将 PKCS#11 token 与 Keyless server 一起使用所需的全部信息,方法是在配置文件的 private_key_stores 部分进行添加。您可以使用 PKCS#11 URI 格式,在配置文件中指定希望 Keyless 能够访问的密钥对。

PKCS#11 URI

PKCS#11 URI 是由分号分隔的属性值对序列,构成单层路径组件,之后可选择跟随查询部分。其一般形式为:

pkcs11:path-component[?query-component]

URI 路径组件包含用于标识资源的属性。查询组件可包含检索路径组件所标识资源时可能需要的一些属性。路径组件中的属性以 ; 字符分隔,查询组件中的属性以 & 作为分隔符。所有属性均经过 URL 编码。

Keyless 要求指定以下三个属性:

  • Module:使用 module-path 定位 PKCS#11 模块库。
  • Token:使用 serialslot-idtoken 指定 PKCS#11 token。
  • Slot:使用 idobject 指定 PKCS#11 密钥对。

对于某些模块,需要查询属性 max-sessions,以防止向模块打开过多会话。根据具体情况,可能还需要某些额外属性,例如 pin-value。更多详情请参阅您的 PKCS#11 模块文档。

示例

以下是存储在不同模块上的密钥的 PKCS#11 URI 示例:

private_key_stores:
- uri: pkcs11:token=SoftHSM2%20RSA%20Token;id=%03?module-path=/usr/lib64/libsofthsm2.so&pin-value=1234
- uri: pkcs11:token=accelerator;object=thaleskey?module-path=/opt/nfast/toolkits/pkcs11/libcknfast.so
- uri: pkcs11:token=YubiKey%20PIV;id=%00?module-path=/usr/lib64/libykcs11.so&pin-value=123456&max-sessions=1
- uri: pkcs11:token=elab2parN;id=%04?module-path=/usr/lib/libCryptoki2_64.so&pin-value=crypto1

限制

目前一次只能使用一个 PKCS#11 模块,因此如果您的密钥分布在多个 HSM 上,我们建议使用 p11-glue 通过一个模块整合访问

这篇文档对您有帮助吗?