PKCS#11 提供程序
PKCS #11 提供程序组件 (aws.greengrass.crypto.Pkcs11Provider
) 使您可以通过 PKCS #11 接口
要预置在 HSM 中存储其证书和私钥的 Greengrass 核心设备,必须在安装 AWS IoT Greengrass Core 软件时将此组件指定为预置插件。有关更多信息,请参阅 通过手动资源预置安装 AWS IoT Greengrass Core 软件。
AWS IoT Greengrass 将此组件作为 JAR 文件提供,您可以下载该组件以在安装过程中将其指定为预置插件。您可以通过以下 URL 下载该组件 JAR 文件的最新版本:https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar
版本
此组件具有以下版本:
-
2.0.x
类型
此组件是一个插件组件 (aws.greengrass.plugin
)。Greengrass Nucleus 在与该 Nucleus 相同的 Java 虚拟机(JVM)中运行该组件。当您在核心设备上更改此组件的版本时,Nucleus 会重新启动。
此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息,请参阅 监控 AWS IoT Greengrass 日志。
有关更多信息,请参阅 组件类型。
操作系统
此组件只能安装在 Linux 核心设备上。
要求
此组件具有以下要求:
-
支持 PKCS#1 v1.5
签名方案和 RSA-2048 密钥大小(或更大)的 RSA 密钥或 ECC 密钥的硬件安全模块。 注意
要使用带 ECC 密钥的硬件安全模块,必须使用 Greengrass Nucleus v2.5.6 或更高版本。
要使用硬件安全模块和密钥管理器,必须使用带 RSA 密钥的硬件安全模块。
-
AWS IoT Greengrass Core 软件可以在运行时加载(使用 libdl)以调用 PKCS#11 函数的 PKCS#11 提供程序库。PKCS#11 提供程序库必须实施以下 PKCS#11 API 操作:
-
C_Initialize
-
C_Finalize
-
C_GetSlotList
-
C_GetSlotInfo
-
C_GetTokenInfo
-
C_OpenSession
-
C_GetSessionInfo
-
C_CloseSession
-
C_Login
-
C_Logout
-
C_GetAttributeValue
-
C_FindObjectsInit
-
C_FindObjects
-
C_FindObjectsFinal
-
C_DecryptInit
-
C_Decrypt
-
C_DecryptUpdate
-
C_DecryptFinal
-
C_SignInit
-
C_Sign
-
C_SignUpdate
-
C_SignFinal
-
C_GetMechanismList
-
C_GetMechanismInfo
-
C_GetInfo
-
C_GetFunctionList
-
-
硬件模块必须可按槽标签解析,如 PKCS#11 规范所定义。
-
如果 HSM 支持对象 ID,则必须将私有密钥和证书存储在同一槽中的 HSM 中,并且它们必须使用相同的对象标签和对象 ID。
-
证书和私有密钥必须由对象标签来解析。
-
私有密钥必须具有以下权限:
-
sign
-
decrypt
-
-
(可选)要使用密钥管理器组件,必须使用 2.1.0 或更高版本,并且私有密钥必须具有以下权限:
-
unwrap
-
wrap
-
-
(可选)如果您使用 TPM2 库并将 Greengrass 核心作为服务运行,则必须提供一个包含 PKCS #11 存储位置的环境变量。以下示例是具有所需环境变量的 systemd 服务文件:
[Unit] Description=Greengrass Core After=network.target [Service] Type=simple PIDFile=/var/run/greengrass.pid Environment=TPM2_PKCS11_STORE=
/path/to/store/directory
RemainAfterExit=no Restart=on-failure RestartSec=10 ExecStart=/bin/sh /greengrass/v2/alts/current/distro/bin/loader [Install] WantedBy=multi-user.target
依赖项
在您部署组件时,AWS IoT Greengrass 也会部署其依赖关系的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求,才能成功部署组件。本部分列出了此组件的已发布版本的依赖关系,以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 AWS IoT Greengrass 控制台
有关组件依赖关系的更多信息,请参阅组件配方参考。
配置
此组件提供您可以在部署组件时自定义的以下配置参数。
name
-
PKCS#11 配置的名称。
library
-
AWS IoT Greengrass Core 软件可以使用 libdl 加载的 PKCS#11 实施库的绝对文件路径。
slot
-
包含私有密钥和设备证书的槽的 ID。此值不同于槽索引或槽标签。
userPin
-
用于访问该槽的用户 PIN。
例 示例:配置合并更新
{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
本地日志文件
此组件使用与 Greengrass Nucleus 组件相同的日志文件。
查看此组件的日志
-
在核心设备上运行以下命令以实时查看此组件的日志文件。将
或/greengrass/v2
C:\greengrass\v2
替换为 AWS IoT Greengrass 根文件夹的路径。
更改日志
下表介绍每个组件版本的更改。
版本 |
更改 |
---|---|
2.0.8 |
对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 |
2.0.7 |
版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 |
2.0.6 |
版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 |
2.0.5 |
版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 |
2.0.4 |
对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 |
2.0.3 |
版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 |
2.0.2 |
版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。 |
2.0.1 |
版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。 |
2.0.0 |
初始版本。 |