

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
<a name="third-signtool-toplevel"></a>

AWS CloudHSM oferece suporte para usar o Microsoft Signtool para assinar arquivos por meio do Client SDK 3 e do Client SDK 5. As etapas para usar essas ferramentas variam de acordo com a versão do Client SDK na qual você baixou atualmente. As seções a seguir fornecem informações sobre cada SDK. 

**Topics**
+ [SDK 5 do cliente com Microsoft SignTool](signtool-sdk5.md)
+ [SDK de cliente 3 com Microsoft SignTool](signtool-sdk3.md)

# Use a Microsoft SignTool com o Client SDK 5 para assinar arquivos
<a name="signtool-sdk5"></a>

Em 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 pelo FIPS 140-2 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.

**Topics**
+ [Etapa 1: configurar os pré-requisitos](#signtool-sdk5-prereqs)
+ [Etapa 2: criar um certificado de assinatura](#signtool-sdk5-csr)
+ [Etapa 3: assinar um arquivo](#signtool-sdk5-sign)

## Etapa 1: configurar os pré-requisitos
<a name="signtool-sdk5-prereqs"></a>

Para usar o Microsoft SignTool com AWS CloudHSM, você precisa do seguinte:
+ Uma instância de cliente do Amazon EC2 em execução em 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 instância do EC2. O cluster deve conter pelo menos um HSM.
+ 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 (SDK) do Microsoft Windows.

**Para configurar os pré-requisitos para uso com o Windows AWS CloudHSM SignTool**

1. Siga as instruções na seção [Getting Started (Conceitos básicos)](getting-started.md) deste guia para executar uma instância do EC2 do Windows e um cluster do AWS CloudHSM .

1. 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](win-ca-overview-sdk5.md). Caso contrário, continue a usar sua CA terceirizada confiável publicamente.

1. Faça download e instale uma das seguintes versões do SDK do Microsoft Windows em sua instância do EC2 do Windows:
   + [SDK 10 do Microsoft Windows](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk)
   + [SDK 8.1 do Microsoft Windows](https://developer.microsoft.com/en-us/windows/downloads/windows-8-1-sdk)
   + [SDK 7 do Microsoft Windows](https://www.microsoft.com/en-us/download/details.aspx?id=8279)

   O executável `SignTool` faz parte do recurso de instalação das Ferramentas de assinatura do SDK do Windows para aplicativos de área de trabalho. 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 SDK do Microsoft Windows, seu AWS CloudHSM cluster e sua CA para [criar um certificado de assinatura](#signtool-sdk5-csr).

## Etapa 2: criar um certificado de assinatura
<a name="signtool-sdk5-csr"></a>

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

**Para gerar uma CSR usando o executável `certreq`**

1. Se ainda não tiver feito isso, conecte-se à instância do EC2 do Windows. Para obter mais informações, consulte [Conectar-se à sua instância](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows) no *Guia do usuário do Amazon EC2*.

1. 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](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certreq_1#BKMK_New).

   ```
   [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 = "CloudHSM Key Storage Provider"
   KeyUsage = "CERT_DIGITAL_SIGNATURE_KEY_USAGE"
   MachineKeySet = True
   Exportable = False
   ```

1. Executar `certreq.exe`. Para este exemplo, salve a CSR como `request.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 a CSR.

1. Envie a CSR à 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
      ```

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

   1. Navegue até o local do `request.csr`e escolha **Open (Abrir)**.

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

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

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

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

   1. 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 outras aplicações.

      ```
      certreq.exe -accept signedCertificate.cer
      ```

Agora, você pode usar o certificado importado para [Assinar um arquivo](#signtool-sdk5-sign).

## Etapa 3: assinar um arquivo
<a name="signtool-sdk5-sign"></a>

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 do certificado ou a *impressão digital*. 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 a GUI da CA ou o executável `certutil` do 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\]](http://docs.aws.amazon.com/pt_br/cloudhsm/latest/userguide/images/signtool-hash.png)

1. Navegue até o diretório PowerShell que contém`SignTool.exe`. O local padrão é `C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64`.

1. 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.\]](http://docs.aws.amazon.com/pt_br/cloudhsm/latest/userguide/images/signtool-last-command.png)

1. (Opcional) Para verificar a assinatura no arquivo, use o seguinte comando:

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

# Use a Microsoft SignTool com o Client SDK 3 para assinar arquivos
<a name="signtool-sdk3"></a>

Em 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 pelo FIPS 140-2 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.

**Topics**
+ [Etapa 1: configurar os pré-requisitos](#signtool-sdk3-prereqs)
+ [Etapa 2: criar um certificado de assinatura](#signtool-sdk3-csr)
+ [Etapa 3: assinar um arquivo](#signtool-sdk3-sign)

## Etapa 1: configurar os pré-requisitos
<a name="signtool-sdk3-prereqs"></a>

Para usar o Microsoft SignTool com AWS CloudHSM, você precisa do seguinte:
+ Uma instância de cliente do Amazon EC2 em execução em 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 instância do EC2. O cluster deve conter pelo menos um HSM.
+ 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 (SDK) do Microsoft Windows.

**Para configurar os pré-requisitos para uso com o Windows AWS CloudHSM SignTool**

1. Siga as instruções na seção [Getting Started (Conceitos básicos)](getting-started.md) deste guia para executar uma instância do EC2 do Windows e um cluster do AWS CloudHSM .

1. 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](win-ca-overview-sdk3.md). Caso contrário, continue a usar sua CA terceirizada confiável publicamente.

1. Faça download e instale uma das seguintes versões do SDK do Microsoft Windows em sua instância do EC2 do Windows:
   + [SDK 10 do Microsoft Windows](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk)
   + [SDK 8.1 do Microsoft Windows](https://developer.microsoft.com/en-us/windows/downloads/windows-8-1-sdk)
   + [SDK 7 do Microsoft Windows](https://www.microsoft.com/en-us/download/details.aspx?id=8279)

   O executável `SignTool` faz parte do recurso de instalação das Ferramentas de assinatura do SDK do Windows para aplicativos de área de trabalho. 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 SDK do Microsoft Windows, seu AWS CloudHSM cluster e sua CA para [criar um certificado de assinatura](#signtool-sdk3-csr).

## Etapa 2: criar um certificado de assinatura
<a name="signtool-sdk3-csr"></a>

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

**Para gerar uma CSR usando o executável `certreq`**

1. Se ainda não tiver feito isso, conecte-se à instância do EC2 do Windows. Para obter mais informações, consulte [Conectar-se à sua instância](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows) no *Guia do usuário do Amazon EC2*.

1. 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](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certreq_1#BKMK_New).

   ```
   [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
   ```

1. Executar `certreq.exe`. Para este exemplo, salve a CSR como `request.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 a CSR.

1. Envie a CSR à 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
      ```

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

   1. Navegue até o local do `request.csr`e escolha **Open (Abrir)**.

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

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

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

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

   1. 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 outras aplicações.

      ```
      certreq.exe -accept signedCertificate.cer
      ```

Agora, você pode usar o certificado importado para [Assinar um arquivo](#signtool-sdk3-sign).

## Etapa 3: assinar um arquivo
<a name="signtool-sdk3-sign"></a>

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 do certificado ou a *impressão digital*. 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 a GUI da CA ou o executável `certutil` do 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\]](http://docs.aws.amazon.com/pt_br/cloudhsm/latest/userguide/images/signtool-hash.png)

1. Navegue até o diretório PowerShell que contém`SignTool.exe`. O local padrão é `C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64`.

1. 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.\]](http://docs.aws.amazon.com/pt_br/cloudhsm/latest/userguide/images/signtool-last-command.png)

1. (Opcional) Para verificar a assinatura no arquivo, use o seguinte comando:

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