PKCS #11 提供商 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

PKCS #11 提供商

PKCS #11 提供者组件 (aws.greengrass.crypto.Pkcs11Provider) 使您能够通过 P KCS #11 接口将Amazon IoT Greengrass核心软件配置为使用硬件安全模块 (HSM)。该组件使您能够安全地存储证书和私钥文件,这样它们就不会在软件中公开或复制。有关更多信息,请参阅硬件安全性集成

要预置在 HSM 中存储其证书和私钥的 Greengrass 核心设备,在安装Amazon IoT Greengrass Core 软件时必须将此组件指定为配置插件。有关更多信息,请参阅通过手动资源配置安装Amazon IoT Greengrass核心软件

Amazon IoT Greengrass将此组件作为 JAR 文件提供,您可以下载该文件以在安装期间将其指定为配置插件。你可以通过以下 URL 下载组件的 JAR 文件的最新版本:https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar

版本

此组件有以下版本:

  • 2.0.x

类型

此组件是插件组件 (aws.greengrass.plugin)。Greengrass 核心在与核心相同的 Java 虚拟机 (JVM) 中运行此组件。当你在核心设备上更改此组件的版本时,nucleus 会重新启动。

该组件使用与 Greengrass 核心相同的日志文件。有关更多信息,请参阅监控Amazon IoT Greengrass日志

有关更多信息,请参阅组件类型

操作系统

此组件只能安装在 Linux 核心设备上。

要求

此组件具有以下要求:

  • 支持 PKCS #1 v1.5 签名方案和具有 RSA-2048 密钥大小(或更大)或 ECC 密钥的 RSA 密钥的硬件安全模块。

    注意

    要使用带有 ECC 密钥的硬件安全模块,必须使用 Greengrass nucleus v2.5.6 或更高版本。

    要使用硬件安全模块和密钥管理器,必须使用带有 RSA 密钥的硬件安全模块。

  • 一个 PKCS #11 提供者库,Amazon IoT Greengrass核心软件可以在运行时(使用 libdl)加载以调用 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

附属物

部署组件时,Amazon IoT Greengrass还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖项的要求才能成功部署该组件。本节列出了此组件的已发布版本的依赖关系以及为每个依赖项定义组件版本的语义版本限制。您还可以在Amazon IoT Greengrass控制台中查看组件每个版本的依赖关系。在组件详细信息页面上,查找 “依赖关系” 列表。

2.0.4

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

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

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

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.5.3 with 2.0 软性
2.0.2

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

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

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

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

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

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.5.3 with 2.0 软性

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

配置

此组件提供以下配置参数,您可以在部署组件时对其进行自定义。

name

PKCS #11 配置的名称。

library

Amazon IoT Greengrass核心软件可以使用 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 替换为Amazon IoT Greengrass根文件夹的路径。

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

更改日志

下表说明版本的组件的更改。

Version

更改

2.0.4

版本 2.0 的with Pass 版本 2.0 的版本。

2.0.3

版本 2.0 的with Pass 版本 2.0 的版本。

2.0.2

版本 2.0 的with Pass 版本 2.0 的版本。

2.0.1

版本 2.0 的with Pass 版本 2.0 的版本。

2.0.0

初始版本。