View a markdown version of this page

PKCS#11 提供程序 - AWS IoT Greengrass

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

PKCS#11 提供程序

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

注意

这个组件只是 Greengrass 原子核所必需的。Greengrass nucleus lite v2.5.0 及更高版本包括内置的 PKCS #11 支持,不需要这个组件。有关更多信息,请参阅 nuc AWS IoT Greengrass leus lite GitHub 存储库中的 PKCS #11 支持

要配置在 HSM 中存储其证书和私钥的 Greengrass 核心设备,您必须在安装 Core 软件时将此组件指定为配置插件。 AWS IoT Greengrass 有关更多信息,请参阅 使用手动资源配置来安装 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

Type

此组件是一个插件组件 (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 密钥的硬件安全模块。

  • 一个 PKCS #11 提供程序库, AWS 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 支持对象,则必须将私钥和证书存储在 HSM 的同一个插槽中,并且它们必须使用相同的对象标签和对象 ID。 IDs

  • 证书和私有密钥必须由对象标签来解析。

  • 私有密钥必须具有以下权限:

    • 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.11

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

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

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

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

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.5.3 <2.15.0 软性
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 核心软件可以使用 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.12

更新 Greengrass nucleus 版本 2.17.0 版本的组件版本。

2.0.11

Greengrass nucleus 版本 2.16.0 版本的版本已更新。

2.0.10

Greengrass nucleus 版本 2.15.0 版本的版本已更新。

2.0.9

Greengrass nucleus 版本 2.14.0 版本的版本已更新。

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

初始版本。