

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Proveedor PKCS\$111
<a name="pkcs11-provider-component"></a>

El componente proveedor PKCS\$111 (`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\$111](https://en.wikipedia.org/wiki/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](hardware-security.md).

**nota**  
Este componente es necesario únicamente para el [núcleo de Greengrass](greengrass-nucleus-component.md). [Greengrass nucleus lite](greengrass-nucleus-lite-component.md) v2.5.0 y versiones posteriores incluyen compatibilidad integrada con PKCS \$111 y no requieren este componente. Para obtener más información, consulte la [compatibilidad con PKCS \$111](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/PKCS11_SUPPORT.md) en el repositorio nucleus lite. AWS IoT Greengrass GitHub 

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 Core. AWS IoT Greengrass Para obtener más información, consulte [Instale el software AWS IoT Greengrass principal con aprovisionamiento manual de recursos](manual-installation.md).

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](https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar).

**Topics**
+ [Versiones](#pkcs11-provider-component-versions)
+ [Tipo](#pkcs11-provider-component-type)
+ [Sistema operativo](#pkcs11-provider-component-os-support)
+ [Requisitos](#pkcs11-provider-component-requirements)
+ [Dependencias](#pkcs11-provider-component-dependencies)
+ [Configuración](#pkcs11-provider-component-configuration)
+ [Archivo de registro local](#pkcs11-provider-component-log-file)
+ [Registros de cambios](#pkcs11-provider-component-changelog)

## Versiones
<a name="pkcs11-provider-component-versions"></a>

Este componente tiene las siguientes versiones:
+ 2.0.x

## Tipo
<a name="pkcs11-provider-component-type"></a>

<a name="public-component-type-plugin-para1"></a>Este componente es un componente de complemento (`aws.greengrass.plugin`). El [núcleo de Greengrass](greengrass-nucleus-component.md) 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.

<a name="public-component-type-plugin-para2"></a>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](monitor-logs.md).

<a name="public-component-type-more-information"></a>Para obtener más información, consulte [Tipos de componentes](develop-greengrass-components.md#component-types).

## Sistema operativo
<a name="pkcs11-provider-component-os-support"></a>

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

## Requisitos
<a name="pkcs11-provider-component-requirements"></a>

Este componente tiene los siguientes requisitos:
+ <a name="hardware-security-module-requirements-key"></a>Un módulo de seguridad de hardware que admite el esquema de firmas [PKCS\$11 versión 1.5](https://tools.ietf.org/html/rfc2313) y claves RSA con un tamaño de clave RSA-2048 (o mayor) o claves ECC.
**nota**  <a name="hardware-security-module-requirements-key-notes"></a>
Para utilizar un módulo de seguridad de hardware con claves ECC, debe utilizar la versión del [núcleo de Greengrass](greengrass-nucleus-component.md) 2.5.6 o posterior.  
Para usar un módulo de seguridad de hardware y el [administrador de secretos](secret-manager-component.md), debe usar un módulo de seguridad de hardware con claves RSA.
+ <a name="hardware-security-module-requirements-pkcs11-provider-library"></a>Una biblioteca de proveedores de PKCS \$111 que el software AWS IoT Greengrass principal puede cargar en tiempo de ejecución (mediante libdl) para invocar las funciones de PKCS \$111. La biblioteca de proveedores PKCS\$111 debe implementar las siguientes operaciones de la API de PKCS\$111:
  + `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`
+ <a name="hardware-security-module-requirements-slot-label"></a>El módulo de hardware debe resolverlo la etiqueta de ranura, tal y como se define en la especificación de PKCS\$111.
+ <a name="hardware-security-module-requirements-private-key-and-certificate"></a>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 el objeto. IDs
+ <a name="hardware-security-module-requirements-object-label"></a>El certificado y la clave privada debe poder resolverla con etiquetas de objeto.
+ <a name="hardware-security-module-requirements-private-key-permissions"></a>La clave privada debe tener los siguientes permisos:
  + `sign`
  + `decrypt`
+ <a name="hardware-security-module-requirements-secret-manager-permissions"></a>(Opcional) Para usar el [componente administrador de secretos](secret-manager-component.md), debe usar la versión 2.1.0 o posterior y la clave privada debe tener los siguientes permisos:
  + `unwrap`
  + `wrap`
+ <a name="hardware-security-module-requirements-environment-variable"></a>(Opcional) Si utiliza la TPM2 biblioteca y ejecuta el núcleo de Greengrass como servicio, debe proporcionar una variable de entorno con la ubicación del almacén PKCS \$111. 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
<a name="pkcs11-provider-component-dependencies"></a>

Al implementar un componente, AWS IoT Greengrass también despliega 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](#pkcs11-provider-component-changelog) 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](https://console.aws.amazon.com//greengrass). En la página de detalles del componente, busque la lista de **Dependencias**.

------
#### [ 2.0.11 ]

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


| Dependencia | Versiones compatibles | Tipo de dependencia | 
| --- | --- | --- | 
| [Núcleo de Greengrass](greengrass-nucleus-component.md) | >=2.5.3 <2.17.0 | Flexible | 

------
#### [ 2.0.10 ]

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


| Dependencia | Versiones compatibles | Tipo de dependencia | 
| --- | --- | --- | 
| [Núcleo de Greengrass](greengrass-nucleus-component.md) | >=2.5.3 =2.5.3 <2.16.0  | Flexible | 

------
#### [ 2.0.9 ]

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


| Dependencia | Versiones compatibles | Tipo de dependencia | 
| --- | --- | --- | 
| [Núcleo de Greengrass](greengrass-nucleus-component.md) | >=2.5.3 =2.5.3 <2.15.0  | Flexible | 

------
#### [ 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](greengrass-nucleus-component.md) | >=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](greengrass-nucleus-component.md) | >=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](greengrass-nucleus-component.md) | >=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](greengrass-nucleus-component.md) | >=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](greengrass-nucleus-component.md) | >=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](greengrass-nucleus-component.md) | >=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](greengrass-nucleus-component.md) | >=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](greengrass-nucleus-component.md) |  >=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](greengrass-nucleus-component.md) |  >=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](component-recipe-reference.md#recipe-reference-component-dependencies).

## Configuración
<a name="pkcs11-provider-component-configuration"></a>

Este componente ofrece los siguientes parámetros de configuración que puede personalizar cuando implemente el componente.<a name="pkcs11-provider-component-configuration-parameters"></a>

`name`  
Un nombre para la configuración de PKCS\$111.

`library`  
La ruta absoluta del archivo a la biblioteca de la implementación de PKCS \$111 que el software Core puede cargar con libdl. AWS IoT Greengrass 

`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.

**Example 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
<a name="pkcs11-provider-component-log-file"></a>

Este componente utiliza el mismo archivo de registro que el componente [núcleo de Greengrass](greengrass-nucleus-component.md).

------
#### [ 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 de núcleo para ver el archivo de registro de este componente en tiempo real. Sustituya `/greengrass/v2` o *C:\$1greengrass\$1v2* por la ruta a la carpeta AWS IoT Greengrass raíz.

------
#### [ 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
<a name="pkcs11-provider-component-changelog"></a>

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


|  **Versión**  |  **Cambios**  | 
| --- | --- | 
|  2.0.12  |  Actualiza la versión del componente para la versión 2.17.0 del núcleo de Greengrass.  | 
|  2.0.11  |  Versión actualizada para el lanzamiento de la versión 2.16.0 de Greengrass nucleus.  | 
|  2.0.10  | Versión actualizada para el lanzamiento de la versión 2.15.0 de Greengrass nucleus. | 
|  2.0.9  | Versión actualizada para la versión 2.14.0 de Greengrass Nucleus. | 
|  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.  | 