Proveedor PKCS#11 - AWS IoT Greengrass

Proveedor PKCS#11

El componente proveedor PKCS#11 (aws.greengrass.crypto.Pkcs11Provider) le permite configurar el software AWS IoT Greengrass Core para utilizar un módulo de seguridad de hardware (HSM) a través de la interfaz PKCS#11. Esta característica le permite almacenar de forma segura los archivos de certificados y claves privadas para que no queden expuestos ni duplicados en el software. Para obtener más información, consulte Integración de la seguridad de hardware.

Para aprovisionar un dispositivo principal de Greengrass que almacene su certificado y su clave privada en un HSM, debe especificar este componente como un complemento de aprovisionamiento al instalar el software AWS IoT Greengrass Core. Para obtener más información, consulte Instalación del software AWS IoT Greengrass Core con aprovisionamiento manual de recursos.

AWS IoT Greengrass proporciona este componente como un archivo JAR que puede descargar para especificarlo como complemento de aprovisionamiento durante la instalación. Puede descargar la última versión del archivo JAR del componente en la siguiente URL: https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar.

Versiones

Este componente tiene las siguientes versiones:

  • 2.0.x

Tipo

Este componente es un componente de complemento (aws.greengrass.plugin). El núcleo de Greengrass ejecuta este componente en la misma máquina virtual Java (JVM) que el núcleo. El núcleo se reinicia al cambiar la versión de este componente en el dispositivo principal.

Este componente usa el mismo archivo de registro que el núcleo de Greengrass. Para obtener más información, consulte Supervisión de los registros de AWS IoT Greengrass.

Para obtener más información, consulte Tipos de componentes.

Sistema operativo

Este componente solo se puede instalar en los dispositivos principales de Linux.

Requisitos

Este componente tiene los siguientes requisitos:

  • Un módulo de seguridad de hardware que admite el esquema de firmas PKCS#1 versión 1.5 y claves RSA con un tamaño de clave RSA-2048 (o mayor) o claves ECC.

    nota

    Para utilizar un módulo de seguridad de hardware con claves ECC, debe utilizar la versión del núcleo de Greengrass 2.5.6 o posterior.

    Para usar un módulo de seguridad de hardware y el administrador de secretos, debe usar un módulo de seguridad de hardware con claves RSA.

  • Una biblioteca de proveedores PKCS#11 que el software AWS IoT Greengrass Core puede cargar en tiempo de ejecución (mediante libdl) para invocar las funciones PKCS#11. La biblioteca de proveedores PKCS#11 debe implementar las siguientes operaciones de la API de PKCS#11:

    • 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

  • El módulo de hardware debe resolverlo la etiqueta de ranura, tal y como se define en la especificación de PKCS#11.

  • Debe almacenar la clave privada y el certificado en el HSM en la misma ranura y deben usar la misma etiqueta de objeto e ID de objeto, si el HSM admite los ID de objeto.

  • El certificado y la clave privada debe poder resolverla con etiquetas de objeto.

  • La clave privada debe tener los siguientes permisos:

    • sign

    • decrypt

  • (Opcional) Para usar el componente administrador de secretos, debe usar la versión 2.1.0 o posterior y la clave privada debe tener los siguientes permisos:

    • unwrap

    • wrap

  • (Opcional) Si utiliza la biblioteca TPM2 y ejecuta el núcleo de Greengrass como servicio, debe proporcionar una variable de entorno con la ubicación del almacén PKCS#11. El siguiente ejemplo es un archivo de servicio de systemd con la variable de entorno requerida:

    [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

Dependencias

Cuando implementa un componente, AWS IoT Greengrass también implementa versiones compatibles de sus dependencias. Esto significa que debe cumplir los requisitos del componente y de todas sus dependencias para poder implementar el componente correctamente. En esta sección, se enumeran las dependencias de las versiones publicadas de este componente y las restricciones de las versiones semánticas que definen las versiones de los componentes para cada dependencia. También puede ver las dependencias de cada versión del componente en la consola de AWS IoT Greengrass. En la página de detalles del componente, busque la lista de Dependencias.

2.0.8

En la siguiente tabla, se muestran las dependencias de la versión 2.0.8 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.5.3 <2.14.0 Flexible
2.0.7

En la siguiente tabla, se muestran las dependencias de la versión 2.0.7 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.5.3 <2.13.0 Flexible
2.0.6

En la siguiente tabla, se muestran las dependencias de la versión 2.0.6 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.5.3 <2.12.0 Flexible
2.0.5

En la siguiente tabla, se muestran las dependencias de la versión 2.0.5 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.5.3 <2.11.0 Flexible
2.0.4

En la siguiente tabla, se muestran las dependencias de la versión 2.0.4 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.5.3 <2.10.0 Flexible
2.0.3

En la siguiente tabla, se muestran las dependencias de la versión 2.0.3 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.5.3 <2.9.0 Flexible
2.0.2

En la siguiente tabla, se muestran las dependencias de la versión 2.0.2 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.5.3 <2.8.0 Flexible
2.0.1

En la siguiente tabla, se muestran las dependencias de la versión 2.0.1 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.5.3 <2.7.0 Flexible
2.0.0

En la siguiente tabla, se muestran las dependencias de la versión 2.0.0 de este componente.

Dependencia Versiones compatibles Tipo de dependencia
Núcleo de Greengrass >=2.5.3 <2.6.0 Flexible

Para obtener más información sobre las dependencias del componente, consulte la referencia de receta de componentes.

Configuración

Este componente ofrece los siguientes parámetros de configuración que puede personalizar cuando implemente el componente.

name

Un nombre para la configuración de PKCS#11.

library

La ruta absoluta del archivo a la biblioteca de la implementación de PKCS#11 que el software AWS IoT Greengrass Core puede cargar con libdl.

slot

El ID de la ranura que contiene la clave privada y el certificado del dispositivo. Este valor es diferente del índice o la etiqueta de la ranura.

userPin

El PIN del usuario que se utiliza para acceder a la ranura.

ejemplo Ejemplo: actualización de la combinación de configuraciones
{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }

Archivo de registro local

Este componente utiliza el mismo archivo de registro que el componente núcleo de Greengrass.

Linux
/greengrass/v2/logs/greengrass.log
Windows
C:\greengrass\v2\logs\greengrass.log
Visualización de los registros de este componente
  • Ejecute el siguiente comando en el dispositivo principal para ver el archivo de registro de este componente en tiempo real. Reemplace /greengrass/v2 o C:\greengrass\v2 por la ruta a la carpeta raíz de 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

Registros de cambios

En la siguiente tabla, se describen los cambios en cada versión del componente.

Versión

Cambios

2.0.8

Versión actualizada para el lanzamiento de la versión 2.13.0 del núcleo de Greengrass.

2.0.7

Versión actualizada para el lanzamiento de la versión 2.12.0 del núcleo de Greengrass.

2.0.6

Versión actualizada para el lanzamiento de la versión 2.11.0 del núcleo de Greengrass.

2.0.5

Versión actualizada para el lanzamiento de la versión 2.10.0 del núcleo de Greengrass.

2.0.4

Versión actualizada para el lanzamiento de la versión 2.9.0 del núcleo de Greengrass.

2.0.3

Versión actualizada para el lanzamiento de la versión 2.8.0 del núcleo de Greengrass.

2.0.2

Versión actualizada para el lanzamiento de la versión 2.7.0 del núcleo de Greengrass.

2.0.1

Versión actualizada para el lanzamiento de la versión 2.6.0 del núcleo de Greengrass.

2.0.0

Versión inicial.