Pular para conteúdo

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 SISTEMA (note a barra de título)

    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]