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,AzureKeyVaultouPkcs11 - HardDelete:
Truepara 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 é sempreTrue; no HSM Kryptus a exclusão não é suportada - KeyRegistrationDisabled:
Truepara impedir o registro de chaves que já existem no repositório (Registrar chave existente). No banco de dados é sempreTrue - KeyInsertionDisabled:
Truepara 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:
Truepara 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 comoFalsepara 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:
Truepara 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
- Repositórios de chaves do GeCert
- Repositórios de chaves do Amplia, com as vantagens e desvantagens de cada tipo