

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

O componente provedor PKCS\$111 (`aws.greengrass.crypto.Pkcs11Provider`) permite que você configure o software AWS IoT Greengrass Core para usar um módulo de segurança de hardware (HSM) por meio da interface [PKCS\$111](https://en.wikipedia.org/wiki/PKCS_11). Esse componente permite que você armazene com segurança arquivos de certificado e chave privada para que eles não sejam expostos ou duplicados no software. Para obter mais informações, consulte [Integração de segurança de hardware](hardware-security.md).

**nota**  
Esse componente é necessário somente para o [núcleo Greengrass](greengrass-nucleus-component.md). O [Greengrass nucleus lite](greengrass-nucleus-lite-component.md) v2.5.0 e versões posteriores incluem suporte integrado ao PKCS \$111 e não exigem esse componente. Para obter mais informações, consulte o [suporte ao PKCS \$111](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/PKCS11_SUPPORT.md) no repositório AWS IoT Greengrass nucleus lite GitHub .

Para provisionar um dispositivo principal do Greengrass que armazena seu certificado e chave privada em um HSM, você deve especificar esse componente como um plug-in de provisionamento ao instalar o software Core. AWS IoT Greengrass Para obter mais informações, consulte [Instale o software AWS IoT Greengrass principal com provisionamento manual de recursos](manual-installation.md).

AWS IoT Greengrass fornece esse componente como arquivo JAR que você pode baixar para especificar como um plug-in de provisionamento durante a instalação. Você pode baixar a versão mais recente do arquivo JAR do componente na seguinte 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**
+ [Versões](#pkcs11-provider-component-versions)
+ [Tipo](#pkcs11-provider-component-type)
+ [Sistema operacional](#pkcs11-provider-component-os-support)
+ [Requisitos](#pkcs11-provider-component-requirements)
+ [Dependências](#pkcs11-provider-component-dependencies)
+ [Configuração](#pkcs11-provider-component-configuration)
+ [Arquivo de log local](#pkcs11-provider-component-log-file)
+ [Changelog](#pkcs11-provider-component-changelog)

## Versões
<a name="pkcs11-provider-component-versions"></a>

Esse componente tem as seguintes versões:
+ 2.0.x

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

<a name="public-component-type-plugin-para1"></a>Este componente é um componente de plug-in (`aws.greengrass.plugin`). O [Greengrass nucleus](greengrass-nucleus-component.md) executa esse componente na mesma Java Virtual Machine (JVM) do núcleo. O núcleo é reiniciado quando você altera a versão desse componente no dispositivo principal.

<a name="public-component-type-plugin-para2"></a>Esse componente usa o mesmo arquivo de log do Greengrass nucleus. Para obter mais informações, consulte [Monitore AWS IoT Greengrass logs](monitor-logs.md).

<a name="public-component-type-more-information"></a>Para obter mais informações, consulte [Tipos de componente](develop-greengrass-components.md#component-types).

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

Esse componente pode ser instalado somente nos dispositivos principais do Linux.

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

Esse componente tem os seguintes requisitos:
+ <a name="hardware-security-module-requirements-key"></a>Um módulo de segurança de hardware que suporta o esquema de assinatura [PKCS\$11 v1.5](https://tools.ietf.org/html/rfc2313) e chaves RSA com tamanho de chave RSA-2048 (ou maior) ou chaves ECC.
**nota**  <a name="hardware-security-module-requirements-key-notes"></a>
Para usar um módulo de segurança de hardware com chaves ECC, use o [Greengrass nucleus](greengrass-nucleus-component.md) v2.5.6 ou posterior.  
Para usar um módulo de segurança de hardware e um [gerenciador de segredos](secret-manager-component.md), use um módulo de segurança de hardware com chaves RSA.
+ <a name="hardware-security-module-requirements-pkcs11-provider-library"></a>Uma biblioteca do provedor PKCS \$111 que o software AWS IoT Greengrass Core pode carregar em tempo de execução (usando libdl) para invocar as funções do PKCS \$111. A biblioteca do provedor PKCS\$111 deve implementar as operações de API do PKCS\$111 a seguir:
  + `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>O módulo de hardware deve ser solucionado pelo rótulo do slot, conforme definido na especificação PKCS\$111.
+ <a name="hardware-security-module-requirements-private-key-and-certificate"></a>Você deve armazenar a chave privada e o certificado no HSM no mesmo slot, e eles devem usar o mesmo rótulo de objeto e ID de objeto, se o HSM suportar objetos. IDs
+ <a name="hardware-security-module-requirements-object-label"></a>O certificado e a chave privada devem ser resolvidos por rótulos de objeto.
+ <a name="hardware-security-module-requirements-private-key-permissions"></a>A chave privada deve ter as seguintes permissões:
  + `sign`
  + `decrypt`
+ <a name="hardware-security-module-requirements-secret-manager-permissions"></a>(Opcional) Para usar o [componente gerenciador de segredos](secret-manager-component.md), é necessário usar a versão 2.1.0 ou posterior, e a chave privada deve ter as seguintes permissões:
  + `unwrap`
  + `wrap`
+ <a name="hardware-security-module-requirements-environment-variable"></a>(Opcional) Se você estiver usando a TPM2 biblioteca e executando o núcleo do Greengrass como um serviço, deverá fornecer uma variável de ambiente com a localização da loja PKCS \$111. O exemplo a seguir é um arquivo de serviço systemd com a variável de ambiente necessária:

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

## Dependências
<a name="pkcs11-provider-component-dependencies"></a>

Quando você implanta um componente, AWS IoT Greengrass também implanta versões compatíveis de suas dependências. Isso significa que é preciso atender aos requisitos do componente e de todas as dependências dele para implantá-lo com êxito. Nesta seção, há uma lista de todas as dependências das [versões lançadas](#pkcs11-provider-component-changelog) desse componente e as restrições de versão semântica que definem as versões dos componentes para cada dependência. Também é possível visualizar as dependências de cada versão do componente no [console do AWS IoT Greengrass](https://console.aws.amazon.com//greengrass). Na página de detalhes do componente, procure a lista de **dependências**.

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

A seguinte tabela lista as dependências da versão 2.0.11 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2,5,3 <2,17,0 | Flexível | 

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

A seguinte tabela lista as dependências da versão 2.0.10 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2,5,3 <2,16,0  | Flexível | 

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

A seguinte tabela lista as dependências da versão 2.0.9 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2,5,3 <2,15,0  | Flexível | 

------
#### [ 2.0.8 ]

A seguinte tabela lista as dependências da versão 2.0.8 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2,5.3 <2,14,0  | Flexível | 

------
#### [ 2.0.7 ]

A seguinte tabela lista as dependências da versão 2.0.7 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2,5,3 <2,13,0  | Flexível | 

------
#### [ 2.0.6 ]

A seguinte tabela lista as dependências da versão 2.0.6 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2,5,3 <2,12,0  | Flexível | 

------
#### [ 2.0.5 ]

A seguinte tabela lista as dependências da versão 2.0.5 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.11.0  | Flexível | 

------
#### [ 2.0.4 ]

A seguinte tabela lista as dependências da versão 2.0.4 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.10.0  | Flexível | 

------
#### [ 2.0.3 ]

A seguinte tabela lista as dependências da versão 2.0.3 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.9.0  | Flexível | 

------
#### [ 2.0.2 ]

A seguinte tabela lista as dependências da versão 2.0.2 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.8.0  | Flexível | 

------
#### [ 2.0.1 ]

A tabela a seguir lista as dependências da versão 2.0.1 deste componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) |  >=2,5,3 <2,7,0  | Flexível | 

------
#### [ 2.0.0 ]

A seguinte tabela lista as dependências da versão 2.0.0 desse componente.


| Dependência | Versões compatíveis | Tipo de dependência | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) |  >=2.5.3 <2.6.0  | Flexível | 

------

Para obter mais informações sobre as dependências dos componentes, consulte [referência de fórmula do componente](component-recipe-reference.md#recipe-reference-component-dependencies).

## Configuração
<a name="pkcs11-provider-component-configuration"></a>

Esse componente fornece os seguintes parâmetros de configuração que podem ser personalizados ao implantar o componente.<a name="pkcs11-provider-component-configuration-parameters"></a>

`name`  
Um nome para a configuração de PKCS\$111.

`library`  
O caminho absoluto do arquivo para a biblioteca da implementação do PKCS \$111 que o software AWS IoT Greengrass Core pode carregar com libdl.

`slot`  
O ID do slot que contém a chave privada e o certificado do dispositivo. Esse valor é diferente do índice do slot ou do rótulo do slot.

`userPin`  
O PIN do usuário a ser usado para acessar o slot.

**Example Exemplo: atualização da mesclagem de configuração**  

```
{
  "name": "softhsm_pkcs11",
  "library": "/usr/lib/softhsm/libsofthsm2.so",
  "slot": 1,
  "userPin": "1234"
}
```

## Arquivo de log local
<a name="pkcs11-provider-component-log-file"></a>

Esse componente usa o mesmo arquivo de log do componente de [Greengrass nucleus](greengrass-nucleus-component.md).

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**Para ver os logs desse componente**
+ Execute o comando a seguir no dispositivo principal para visualizar o arquivo de log desse componente em tempo real. Substitua `/greengrass/v2` ou *C:\$1greengrass\$1v2* pelo caminho para a pasta AWS IoT Greengrass raiz.

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## Changelog
<a name="pkcs11-provider-component-changelog"></a>

A tabela a seguir descreve as alterações em cada versão do componente.


|  **Versão**  |  **Alterações**  | 
| --- | --- | 
|  2.0.12  |  Atualiza a versão do componente para a versão 2.17.0 do núcleo Greengrass.  | 
|  2.0.11  |  Versão atualizada para a versão 2.16.0 do Greengrass nucleus.  | 
|  2.0.10  | Versão atualizada para o Greengrass nucleus versão 2.15.0. | 
|  2.0.9  | Versão atualizada para o Greengrass nucleus versão 2.14.0. | 
|  2.0.8  | Versão atualizada para o lançamento da versão 2.13.0 do núcleo do Greengrass. | 
|  2.0.7  | Versão atualizada para o núcleo do Greengrass 2.12.0. | 
|  2.0.6  | Versão atualizada para o lançamento da versão 2.11.0 do núcleo do Greengrass. | 
|  2.0.5  | Versão atualizada para o lançamento da versão 2.10.0 do núcleo do Greengrass. | 
|  2.0.4  | Versão atualizada para o núcleo do Greengrass 2.9.0. | 
|  2.0.3  | Versão atualizada para o lançamento da versão 2.8.0 do núcleo do Greengrass. | 
|  2.0.2  |  Versão atualizada para o lançamento da versão 2.7.0 do núcleo do Greengrass.  | 
|  2.0.1  |  Versão atualizada para o lançamento da versão 2.6.0 do núcleo do Greengrass.  | 
|  2.0.0  |  Versão inicial.  | 