Fornecedor PKCS#11 - AWS IoT Greengrass

Fornecedor PKCS#11

O componente provedor PKCS#11 (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#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 ter mais informações, consulte Integração de segurança de hardware.

Para provisionar um dispositivo principal do Greengrass que armazena seu certificado e sua 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 ter mais informações, consulte Instalar o software AWS IoT Greengrass Core com provisionamento manual de recursos..

AWS IoT Greengrassfornece 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.

Versões

Esse componente tem as seguintes versões:

  • 2.0.x

Tipo

Este componente é um componente de plug-in (aws.greengrass.plugin). O núcleo do Greengrass 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.

Esse componente usa o mesmo arquivo de log do núcleo do Greengrass. Para ter mais informações, consulte Monitore AWS IoT Greengrass logs.

Para ter mais informações, consulte Tipos de componentes.

Sistema operacional

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

Requisitos

Esse componente tem os seguintes requisitos:

  • Um módulo de segurança de hardware que suporta o esquema de assinatura PKCS#1 v1.5 e chaves RSA com tamanho de chave RSA-2048 (ou maior) ou chaves ECC.

    nota

    Para usar um módulo de segurança de hardware com chaves ECC, use o núcleo do Greengrass v2.5.6 ou posterior.

    Para usar um módulo de segurança de hardware e um gerenciador de segredos, use um módulo de segurança de hardware com chaves RSA.

  • Uma biblioteca do provedor PKCS#11 que o software AWS IoT Greengrass Core pode carregar em runtime (usando libdl) para invocar as funções do PKCS#11. A biblioteca do provedor PKCS#11 deve implementar as operações de API do PKCS#11 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

  • O módulo de hardware deve ser solucionado pelo rótulo do slot, conforme definido na especificação PKCS#11.

  • 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 IDs de objeto.

  • O certificado e a chave privada devem ser resolvidos por rótulos de objeto.

  • A chave privada deve ter as seguintes permissões:

    • sign

    • decrypt

  • (Opcional) Para usar o componente gerenciador de segredos, você deve usar a versão 2.1.0 ou posterior, e a chave privada deve ter as seguintes permissões:

    • unwrap

    • wrap

  • (Opcional) Se você estiver usando a biblioteca TPM2 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#11. 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

Quando você implanta um componente, o AWS IoT Greengrass também implanta versões compatíveis das dependências dele. 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 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. Na página de detalhes do componente, procure a lista de dependências.

2.0.8

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

Dependência Versões compatíveis Tipo de dependência
Núcleo do Greengrass >=2,5.3 <2,14,0 Flexível
2.0.7

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

Dependência Versões compatíveis Tipo de dependência
Núcleo do Greengrass >=2,5,3 <2,13,0 Flexível
2.0.6

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

Dependência Versões compatíveis Tipo de dependência
Núcleo do Greengrass >=2,5,3 <2,12,0 Flexível
2.0.5

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

Dependência Versões compatíveis Tipo de dependência
Núcleo do Greengrass >=2.5.3 <2.11.0 Flexível
2.0.4

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

Dependência Versões compatíveis Tipo de dependência
Núcleo do Greengrass >=2.5.3 <2.10.0 Flexível
2.0.3

A tabela a seguir lista as dependências para a versão 2.0.3 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo do Greengrass >=2.5.3 <2.9.0 Flexível
2.0.2

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

Dependência Versões compatíveis Tipo de dependência
Núcleo do Greengrass >=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
Núcleo do Greengrass >=2,5,3 <2,7,0 Flexível
2.0.0

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

Dependência Versões compatíveis Tipo de dependência
Núcleo do Greengrass >=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.

Configuração

Esse componente fornece os seguintes parâmetros de configuração que podem ser personalizados ao implantar o componente.

name

Um nome para a configuração de PKCS#11.

library

O caminho absoluto do arquivo para a biblioteca da implementação do PKCS#11 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.

exemplo 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

Esse componente usa o mesmo arquivo de log do componente de núcleo do Greengrass.

Linux
/greengrass/v2/logs/greengrass.log
Windows
C:\greengrass\v2\logs\greengrass.log
Para exibir 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:\greengrass\v2 pelo caminho para a pasta raiz do 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

Changelog

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

Version (Versão)

Alterações

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.