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
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
Temas
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
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.
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
o/greengrass/v2
C:\greengrass\v2
por la ruta a la carpeta raíz de AWS IoT Greengrass.
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. |