Contas de sistema
Toda a configuração feita usando a console Dinamocon do HSM estará no escopo do usuário atual (Current User). Para configurar os parâmetros para contas de sistema, é necessário impersonificar a execução do console no Windows sob a conta em questão. Isto pode ser feito utilizando ferramentas disponibilizadas pela própria Microsoft, fabricante do sistema operacional.
As contas de sistema tratadas aqui são:
System
(ou SISTEMA), sid:S-1-5-18
LocalService
(ou SERVIÇO LOCAL), sid:S-1-5-19
NetworkService
(ou SERVIÇO DE REDE), sid:S-1-5-20
A rigor estas não são exatamente contas no Windows, mas trataremos assim para facilitar o entendimento.
Ferramentas utilizadas
- Ferramenta utilizada para impersonificação:
psexec64
, da suite PSTtools fornecida pela Microsoft. - Software cliente do HSM Dinamo: msi 64-bit, inclui a console de gerência GUI (Dinamocon).
- Utilitário para HSM Dinamo:
hsmutil
.
Procedimento para associar um certificado em conta de sistema com uma chave no HSM
Perigo
Atenção: a execução com identidade de SISTEMA dá um acesso praticamente ilimitado a todo o ambiente e pode provocar danos reais se usada de forma inapropriada. Seja bastante cauteloso no uso desta facilidade.
-
Instanciar um terminal
cmd
sob o perfil de uma conta de sistema do Windows. Execute o comando abaixo (conforme a conta de interesse) num terminal (powershell ou cmd) com elevação de privilégio administrativo:psexec64 -i -u "NT AUTHORITY\System" cmd
psexec64 -i -u "NT AUTHORITY\LocalService" cmd
psexec64 -i -u "NT AUTHORITY\NetworkService" cmd
As contas devem ser informadas exatamente por estes nomes (em inglês) mesmo em sistemas em português; ainda que possam ser mostradas localizadas em certos utilitários (gui e cli) do Windows.
Note que estas contas não têm senha. Caso esteja sendo solicitada alguma é provável que o nome da conta esteja sendo informado incorretamente.
Ex:
> psexec64 -i -u "NT AUTHORITY\system" cmd PsExec v2.43 - Execute processes remotely Copyright (C) 2001-2023 Mark Russinovich Sysinternals - www.sysinternals.com . . . cmd lançado em outro terminal (interativo) ... . . . ... exit no terminal do cmd. cmd exited on MYHOST with error code 0. > _
O novo
cmd
startado rodará sob o perfil da conta indicada, ou seja, esta conta será o current user para qualquer aplicação executada a partir dele. -
Executar a console GUI de gerência do HSM a partir do terminal
cmd
."\Program Files\Dinamo Networks\HSM Dinamo\dinamocon.exe"
Na barra de título é exibida a conta sob a qual a console está rodando (v 4.8.0+).
Em Configuração de ambiente/MS CAPI/Containers verifique ou crie o container e indique a chave privada que será usada. Tome nota do nome do container. Para maiores informações consulte o tópico específico Containers / Certificate Store.
-
Executar o gerenciador de certificados gui a partir do
cmd
.certmgr
Localize o certificado que será associado e tome nota do hash do certificado (também chamado de fingerprint ou impressão digital). O valor de hash será utilizado adiante, tome nota. Se o certificado ainda não foi importado, é possível fazê-lo neste momento utilizando o gerenciador.
Também é possível listar os certificados executando a linha de comando:
certutil -user -store "My"
-
Executar, a partir do
cmd
, o utilitário hsmutil para fazer a associação entre um certificado no cert store do Windows e uma chave no HSM:Ex. 1, para provedor CSP:
-conteiner
é um nome de conteiner de csp-keyspec
é o uso da chave no conteiner (sign ou key_exchange)
hsmutil -j cert-assign-key --csp "Dinamo HSM Cryptographic Provider" --store current_user --repo My --container prod --keyspec at_keyexchange --certhash 9A714AEFD314BE74C7953002A6FDC83248C7868A
Ex. 2, para provedor CNG (cng habilitada):
-conteiner
é um nome de chave no HSM-keyspec
écng
(literal)
hsmutil -j cert-assign-key --csp "Dinamo HSM Cryptographic Provider" --store current_user --repo My --container mykey --keyspec cng --certhash 9A714AEFD314BE74C7953002A6FDC83248C7868A
-
Para fazer um teste de assinatura via CSP/CNG é possível utilizar o hsmutil :
Ex:
cmd hsmutil -j cert-sign --store current_user --repo My --certhash 9979222498057bc1e2867da9c02dc500f080a264 --inform hex --in 1234EEFF BB187A708484AE518C527DBEF56C92F404ECF49EDCD7A5EFA7BBC0C19D67CBE7E8243F45164831F340A6FE59A805CC F4B90140C4AD7BD0C63D44AF7487DCA85521E191EF809BC1DF92232FE8DC5B74A9FE549417FE78B463FCC0D72FBA93 474072E8D7A6FC70E59C22879F2FCC71C43D0095F2D8A84392182AFE62DAAF7CF0D46238C9F41480576449557CE8A6 3DFCFDBCE6E66A9E13E48F7D82C0F5C50A05F350C0FFE1B06841FAA11D8F1E6C6E700665F5ECD72982DBF198F6E728 6997FE35E4984B7A5A59DDBDF6F84A4998343EF2E2C62DB45EE5A4BF954C6A57E572DA8ACB5008EAA25E363F0FCAF0 C1DF95204C4A68D57D4AEF31F737845329A2D0A980 Total time: 125.84 ms (0.13 seg) [7.95 op/sec]