PKCS#11 提供程序 - AWS IoT Greengrass

PKCS#11 提供程序

PKCS #11 提供程序组件 (aws.greengrass.crypto.Pkcs11Provider) 使您可以通过 PKCS #11 接口将 AWS IoT Greengrass Core 软件配置为使用硬件安全模块(HSM)。此组件使您能够安全地存储证书和私钥文件,这样它们就不会在软件中暴露或复制。有关更多信息,请参阅 硬件安全性集成

要预置在 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 控制台中查看每个组件版本的依赖关系。在组件详细信息页面上,查找依赖关系列表。

2.0.8

下表列出了此组件的版本 2.0.8 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.5.3 <2.14.0 软性
2.0.7

下表列出了此组件的版本 2.0.7 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.5.3 <2.13.0 软性
2.0.6

下表列出了此组件的版本 2.0.6 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.5.3 <2.12.0 软性
2.0.5

下表列出了此组件的版本 2.0.5 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.5.3 <2.11.0 软性
2.0.4

下表列出了此组件的版本 2.0.4 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.5.3 <2.10.0 软性
2.0.3

下表列出了此组件的版本 2.0.3 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.5.3 <2.9.0 软性
2.0.2

下表列出了此组件的版本 2.0.2 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.5.3 <2.8.0 软性
2.0.1

下表列出了此组件的版本 2.0.1 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.5.3 <2.7.0 软性
2.0.0

下表列出了此组件版本 2.0.0 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.5.3 <2.6.0 软性

有关组件依赖关系的更多信息,请参阅组件配方参考

配置

此组件提供您可以在部署组件时自定义的以下配置参数。

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 组件相同的日志文件。

Linux
/greengrass/v2/logs/greengrass.log
Windows
C:\greengrass\v2\logs\greengrass.log
查看此组件的日志
  • 在核心设备上运行以下命令以实时查看此组件的日志文件。将 /greengrass/v2C:\greengrass\v2 替换为 AWS IoT Greengrass 根文件夹的路径。

    Linux
    sudo tail -f /greengrass/v2/logs/greengrass.log
    Windows (PowerShell)
    Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait

更改日志

下表介绍每个组件版本的更改。

版本

更改

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

初始版本。