Use o Microsoft SignTool com AWS CloudHSM para assinar arquivos - AWS CloudHSM

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use o Microsoft SignTool com AWS CloudHSM para assinar arquivos

Na criptografia e na infraestrutura de chave pública (PKI), as assinaturas digitais são usadas para confirmar que os dados foram enviados por uma entidade confiável. As assinaturas também indicam que os dados não foram alterados em trânsito. Uma assinatura é um hash criptografado que é gerado com a chave privada do remetente. O destinatário pode verificar a integridade dos dados descriptografando sua assinatura de hash com a chave pública do remetente. Por outro lado, o remetente é responsável por manter um certificado digital. O certificado digital demonstra a propriedade da chave privada do remetente e fornece ao destinatário a chave pública que é necessária para a descriptografia. Desde que a chave privada seja de propriedade do remetente, a assinatura pode ser confiável. AWS CloudHSM fornece hardware seguro validado FIPS 140-2 de nível 3 para você proteger essas chaves com acesso exclusivo de um único inquilino.

Muitas organizações usam a Microsoft SignTool, uma ferramenta de linha de comando que assina, verifica e registra a data e hora dos arquivos para simplificar o processo de assinatura de código. Você pode usar AWS CloudHSM para armazenar com segurança seus pares de chaves até que sejam necessários SignTool, criando assim um fluxo de trabalho facilmente automatizável para assinar dados.

Os tópicos a seguir fornecem uma visão geral de como usar SignTool com AWS CloudHSM.

Etapa 1: configurar os pré-requisitos

Para usar o Microsoft SignTool com AWS CloudHSM, você precisa do seguinte:

  • Uma instância EC2 cliente da Amazon executando um sistema operacional Windows.

  • Uma autoridade de certificação (CA), auto-mantida ou estabelecida por um provedor de terceiros.

  • Um AWS CloudHSM cluster ativo na mesma nuvem pública virtual (VPC) da sua EC2 instância. O cluster deve conter pelo menos umHSM.

  • Um usuário criptográfico (UC) para possuir e gerenciar chaves no AWS CloudHSM cluster.

  • Um arquivo não assinado ou executável.

  • O Kit de desenvolvimento de software Microsoft Windows (SDK).

Para configurar os pré-requisitos para uso com o Windows AWS CloudHSM SignTool
  1. Siga as instruções na seção Introdução deste guia para iniciar uma EC2 instância do Windows e um AWS CloudHSM cluster.

  2. Se você quiser hospedar sua própria CA do Windows Server, siga as etapas 1 e 2 em Configurando o Windows Server como uma autoridade de certificação com AWS CloudHSM. Caso contrário, continue a usar sua CA terceirizada confiável publicamente.

  3. Baixe e instale uma das seguintes versões do Microsoft Windows SDK em sua EC2 instância do Windows:

    O SignTool executável faz parte do recurso de instalação das Ferramentas de SDK Assinatura do Windows para Aplicativos de Desktop. Você pode omitir outros recursos a serem instalados se não forem necessários. O local de instalação padrão é:

    C:\Program Files (x86)\Windows Kits\<SDK version>\bin\<version number>\<CPU architecture>\signtool.exe

Agora você pode usar o Microsoft WindowsSDK, seu AWS CloudHSM cluster e sua CA para criar um certificado de assinatura.

Etapa 2: criar um certificado de assinatura

Agora que você baixou o Windows SDK na sua EC2 instância, pode usá-lo para gerar uma solicitação de assinatura de certificado (CSR). CSRÉ um certificado não assinado que, eventualmente, é passado para sua CA para assinatura. Neste exemplo, usamos o certreq executável incluído no Windows SDK para gerar o. CSR

Para gerar um CSR usando o certreq executável
  1. Se você ainda não tiver feito isso, conecte-se à sua EC2 instância do Windows. Para obter mais informações, consulte Connect to Your Instance no Guia EC2 do usuário da Amazon.

  2. Crie um arquivo chamado request.inf que contenha as linhas a seguir. Substitua as informações de Subject com as de sua organização. Para obter uma explicação de cada parâmetro, consulte a Documentação da Microsoft.

    [Version] Signature= $Windows NT$ [NewRequest] Subject = "C=<Country>,CN=<www.website.com>,O=<Organization>,OU=<Organizational-Unit>,L=<City>,S=<State>" RequestType=PKCS10 HashAlgorithm = SHA256 KeyAlgorithm = RSA KeyLength = 2048 ProviderName = Cavium Key Storage Provider KeyUsage = "CERT_DIGITAL_SIGNATURE_KEY_USAGE" MachineKeySet = True Exportable = False
  3. Executar certreq.exe. Neste exemplo, salvamos o CSR comorequest.csr.

    certreq.exe -new request.inf request.csr

    Internamente, um novo par de chaves é gerado em seu AWS CloudHSM cluster, e a chave privada do par é usada para criar o. CSR

  4. Envie o CSR para sua CA. Se estiver usando uma CA do Windows Server, siga estas etapas:

    1. Digite o seguinte comando para abrir a ferramenta CA:

      certsrv.msc
    2. Na nova janela, clique com o botão direito do mouse no nome do servidor da CA. Escolha All Tasks (Todas as tarefas) e depois escolha Submit new request (Enviar nova solicitação).

    3. Navegue até o local do request.csre escolha Open (Abrir).

    4. Navegue até a pasta Pending Requests (Solicitações pendentes) expandindo o menu Server CA (CA do servidor). Clique com o botão direito do mouse na solicitação que você acabou de criar e, em All Tasks (Todas as tarefas), escolha Issue (Problema).

    5. Agora, navegue até a pasta Issued Certificates (Certificados emitidos) (acima da pasta Pending Requests (Solicitações pendentes)).

    6. Escolha Open (Abrir) para visualizar o certificado e depois escolha a guia Details (Detalhes).

    7. Escolha Copy to File (Copiar no arquivo) para iniciar o Certificate Export Wizard (Assistente de exportação da CA). Salve o arquivo X.509 DER codificado em um local seguro como. signedCertificate.cer

    8. Saia da ferramenta CA e use o comando a seguir, que move o arquivo do certificado para o armazenamento de certificados pessoais no Windows. Ele pode então ser usado por outros aplicativos.

      certreq.exe -accept signedCertificate.cer

Agora, você pode usar o certificado importado para Assinar um arquivo.

Etapa 3: assinar um arquivo

Agora você está pronto para usar SignTool seu certificado importado para assinar seu arquivo de exemplo. Para fazer isso, você precisa saber o hash SHA -1 ou a impressão digital do certificado. A impressão digital é usada para garantir que use SignTool apenas certificados verificados por. AWS CloudHSM Neste exemplo, usamos PowerShell para obter o hash do certificado. Você também pode usar o certutil executável do CA GUI ou SDK do Windows.

Para obter uma impressão digital do certificado e usá-lo para assinar um arquivo
  1. Abra PowerShell como administrador e execute o seguinte comando:

    Get-ChildItem -path cert:\LocalMachine\My

    Copie a Thumbprint que é retornada.

    O hash do certificado é retornado como a impressão digital
  2. Navegue até o diretório PowerShell que contémSignTool.exe. O local padrão é C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64.

  3. Finalmente, assine seu arquivo executando o comando a seguir. Se o comando for bem-sucedido, PowerShell retornará uma mensagem de sucesso.

    signtool.exe sign /v /fd sha256 /sha1 <thumbprint> /sm C:\Users\Administrator\Desktop\<test>.ps1
    O arquivo .ps1 foi assinado com êxito.
  4. (Opcional) Para verificar a assinatura no arquivo, use o seguinte comando:

    signtool.exe verify /v /pa C:\Users\Administrator\Desktop\<test>.ps1