Pular para o conteúdo principal

Configuração de repositórios de chaves - GeCert

Os repositórios de chaves do GeCert são configurados na seção KeyStores: cada subseção tem o nome de um repositório e contém a configuração dele, começando pelo Type. O nome é o que aparece na aplicação web e o que o Sys Admin libera para cada organização (acesso ao repositório de chaves).

Repositório padrão​

Toda instância tem o repositório DatabaseDefault, do tipo Database, que guarda as chaves criptografadas no banco de dados, sem nenhuma configuração. Ele não aceita o registro de chaves existentes e sempre apaga a chave do banco quando ela é excluída. Para mudar as opções dele, declare uma subseção com o mesmo nome DatabaseDefault e Type=Database.

Opções comuns​

Todo repositório aceita estas opções:

  • Type: Database, Kryptus, AzureKeyVault ou Pkcs11
  • HardDelete: True para apagar a chave do repositório quando ela é excluída no GeCert. O padrão é False: a chave fica apenas marcada como excluída. No banco de dados é sempre True; no HSM Kryptus a exclusão não é suportada
  • KeyRegistrationDisabled: True para impedir o registro de chaves que já existem no repositório (Registrar chave existente). No banco de dados é sempre True
  • KeyInsertionDisabled: True para impedir a geração de chaves e a importação de PKCS #12 neste repositório. Um repositório com registro e inserção desabilitados só serve às chaves que já estão nele

HSM Kryptus​

Para guardar as chaves em um HSM Kryptus kNET, o GeCert usa o protocolo KMIP por HTTPS:

  • Type: Kryptus
  • Host: endereço IP ou nome do host do VHSM
  • Port: porta HTTPS do VHSM
  • VcoUsername e VcoPassword: credenciais de um usuário VCO, com as quais o GeCert cria um usuário do HSM para a partição de cada organização
  • RootUsername e RootPassword: credenciais de um usuário comum, dono da raiz do repositório. É nele que o GeCert guarda, como secret data, o PIN de cada partição. Se o usuário não existir, o GeCert o cria com o usuário VCO
  • ResponseCacheDisabled: True para desligar o cache das respostas do HSM. O padrão é False

Exemplo (arquivo de configuração .ini ou .conf):

[KeyStores:MeuHsm]
Type=Kryptus
Host=10.1.2.3
Port=443
VcoUsername=vco
VcoPassword=SENHA_DO_VCO
RootUsername=gecert
RootPassword=SENHA_DO_USUARIO

Exemplo (variáveis de ambiente):

KeyStores__MeuHsm__Type=Kryptus
KeyStores__MeuHsm__Host=10.1.2.3
KeyStores__MeuHsm__Port=443
KeyStores__MeuHsm__VcoUsername=vco
KeyStores__MeuHsm__VcoPassword=SENHA_DO_VCO
KeyStores__MeuHsm__RootUsername=gecert
KeyStores__MeuHsm__RootPassword=SENHA_DO_USUARIO

Azure Key Vault​

O GeCert se autentica no Azure com um aplicativo registrado no Microsoft Entra ID e um client secret, e cria, importa, lê, usa e exclui chaves no Key Vault. Crie o aplicativo, o segredo e o Key Vault e conceda as permissões como descrito para o Amplia, incluindo as permissões de importar e excluir chaves. Depois configure:

  • Type: AzureKeyVault
  • Endpoint: o Vault URI do Key Vault, por exemplo https://meu-cofre.vault.azure.net/
  • TenantId: o ID do tenant do Microsoft Entra
  • AppId: o Application (client) ID do aplicativo
  • AppKey: o client secret do aplicativo
  • UseHsm: por padrão (True), as chaves geradas e importadas são protegidas por HSM, o que exige um Key Vault Premium. Defina como False para usar chaves de software

No Azure Key Vault, as chaves geradas têm 2048 ou 4096 bits, e o nome da chave só pode ter letras, números e hífens.

Exemplo (arquivo de configuração .ini ou .conf):

[KeyStores:MeuKeyVault]
Type=AzureKeyVault
Endpoint=https://meu-cofre.vault.azure.net/
TenantId=00000000-0000-0000-0000-000000000000
AppId=00000000-0000-0000-0000-000000000000
AppKey=CLIENT_SECRET_DO_APLICATIVO
HardDelete=True

Dispositivo PKCS #11​

Para um HSM ou token com biblioteca PKCS #11, instalada no servidor do GeCert:

  • Type: Pkcs11
  • Module: o caminho ou o nome da biblioteca PKCS #11 (por exemplo, eTPKCS11.dll)
  • Pin: o PIN do token
  • TokenSerialNumber: o número de série do token a usar, quando a biblioteca enxerga mais de um. Se omitido, o primeiro token é usado
  • IgnoreCaseOnLabelMatching: True para localizar as chaves pelo label sem diferenciar maiúsculas de minúsculas. O padrão é False

Exemplo (arquivo de configuração .ini ou .conf):

[KeyStores:MeuToken]
Type=Pkcs11
Module=eTPKCS11.dll
Pin=PIN_DO_TOKEN
HardDelete=True

Exemplo (configuração JSON):

"KeyStores": {
"MeuHsm": {
"Type": "Kryptus",
"Host": "10.1.2.3",
"Port": 443,
"VcoUsername": "vco",
"VcoPassword": "SENHA_DO_VCO",
"RootUsername": "gecert",
"RootPassword": "SENHA_DO_USUARIO"
},
"MeuToken": {
"Type": "Pkcs11",
"Module": "eTPKCS11.dll",
"Pin": "PIN_DO_TOKEN",
"HardDelete": true
}
}

Depois de configurar um repositório, libere-o para as organizações que vão usá-lo: na área Sys Admin, nos detalhes da organização, clique em Conceder acesso ao meio de armazenamento.

Veja também​

Ver em Markdown