Ir para o conteúdo

Uso com 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.

  1. 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.

  2. 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+).

    Impersonificação da conta SISTEMA
    Impersonificação da conta SISTEMA

    Impersonificação da conta SERVIÇO LOCAL
    Impersonificação da conta SERVIÇO LOCAL

    Impersonificação da conta SERVIÇO DE REDE
    Impersonificação da conta SERVIÇO DE REDE

    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.

  3. 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"
    
  4. 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
    
  5. 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]