Gerar e exportar certificados para ponto a site usando o PowerShell

As conexões ponto a site usam certificados para se autenticar. Este artigo mostra como criar um certificado raiz autoassinado e gerar certificados do cliente utilizando o PowerShell no Windows 10 ou posterior ou no Windows Server 2016 ou posterior.

Os cmdlets do PowerShell que você utiliza para gerar certificados fazem parte do sistema operacional e não funcionam em outras versões do Windows. O sistema operacional host é usado apenas para gerar os certificados. Depois que os certificados forem gerados, você poderá carregá-los ou instalá-los em qualquer sistema operacional cliente com suporte.

Se você não tiver um computador que atende ao requisito de sistema operacional, poderá usar o MakeCert para gerar certificados. Os certificados que você gerar utilizando qualquer um dos métodos podem ser instalados em qualquer sistema operacional cliente com suporte.

Criar um certificado raiz autoassinado

Utilize o cmdlet New-SelfSignedCertificate para criar um certificado raiz autoassinado. Para obter informações adicionais sobre os parâmetros, consulte New-SelfSignedCertificate.

  1. Em um computador com Windows 10 ou posterior ou Windows Server 2016, abra um console do Windows PowerShell com privilégios elevados.

  2. Crie um certificado raiz autoassinado. O exemplo a seguir cria um certificado raiz autoassinado chamado "P2SRootCert" que é instalado automaticamente em "Certificates-Current User\Personal\Certificates". Exiba o certificado abrindo certmgr.msc ou Gerenciar Certificados de Usuário.

    Faça as modificações necessárias antes de usar esta amostra. O parâmetro "NotAfter" é opcional. Por padrão, sem esse parâmetro, o certificado expira em 1 ano.

    $params = @{
        Type = 'Custom'
        Subject = 'CN=P2SRootCert'
        KeySpec = 'Signature'
        KeyExportPolicy = 'Exportable'
        KeyUsage = 'CertSign'
        KeyUsageProperty = 'Sign'
        KeyLength = 2048
        HashAlgorithm = 'sha256'
        NotAfter = (Get-Date).AddMonths(24)
        CertStoreLocation = 'Cert:\CurrentUser\My'
    }
    $cert = New-SelfSignedCertificate @params
    
  3. Deixe o console do PowerShell aberto e prossiga com as próximas etapas para gerar certificado do cliente.

Gerar um certificado do cliente

Cada computador cliente que se conecta a uma rede virtual usando ponto a site deve ter um certificado do cliente instalado. Você gera um certificado do cliente com base no certificado raiz autoassinado e, em seguida, a exporta e instala o certificado do cliente. Se o certificado do cliente não estiver instalado, a autenticação não vai funcionar.

As etapas abaixo lhe guiarão pela geração de um certificado do cliente por meio de um certificado raiz autoassinado. Você pode gerar vários certificados de cliente a partir do mesmo certificado raiz. Quando você gerar certificados do cliente usando as etapas a seguir, o certificado do cliente será instalado automaticamente no computador que você tiver usado para gerar o certificado. Se você quiser instalar um certificado do cliente em outro computador cliente, poderá exportar o certificado.

Os exemplos utilizam o cmdlet New-SelfSignedCertificate para gerar um certificado do cliente.

Exemplo 1 - sessão do console do PowerShell ainda aberta

Use esse exemplo se você não fechou o console do PowerShell depois de criar o certificado raiz autoassinado. Este exemplo continua da seção anterior e usa a variável declarada '$cert'. Se você fechou o console do PowerShell após criar o certificado raiz autoassinado ou está criando certificados do cliente adicionais em uma nova sessão de console do PowerShell, use as etapas no Examplo 2.

Modifique e execute o exemplo para gerar um certificado do cliente. Se você executar o exemplo a seguir sem modificá-lo, o resultado será um certificado do cliente chamado 'P2SChildCert'. Se você deseja nomear o certificado filho diferentemente, modifique o valor de CN. Não altere TextExtension ao executar esse exemplo. O certificado do cliente que você gera é instalado automaticamente em 'Certificates - Current User\Personal\Certificates' em seu computador.


   $params = @{
       Type = 'Custom'
       Subject = 'CN=P2SChildCert'
       DnsName = 'P2SChildCert'
       KeySpec = 'Signature'
       KeyExportPolicy = 'Exportable'
       KeyLength = 2048
       HashAlgorithm = 'sha256'
       NotAfter = (Get-Date).AddMonths(18)
       CertStoreLocation = 'Cert:\CurrentUser\My'
       Signer = $cert
       TextExtension = @(
        '2.5.29.37={text}1.3.6.1.5.5.7.3.2')
   }
   New-SelfSignedCertificate @params

Exemplo 2 - Nova sessão de console do PowerShell

Se você está criando outros certificados do cliente ou não está usando a mesma sessão do PowerShell usada para criar o certificado raiz autoassinado, use as seguintes etapas:

  1. Identifique o certificado raiz autoassinado instalado no computador. Esse cmdlet retorna uma lista de certificados instalados no seu computador.

    Get-ChildItem -Path "Cert:\CurrentUser\My"
    
  2. Localize o nome da entidade da lista retornada e copie a impressão digital localizada ao lado dela para um arquivo de texto. No exemplo a seguir, há dois certificados. O nome CN é o nome do certificado raiz autoassinado do qual você deseja gerar um certificado filho. Nesse caso, 'P2SRootCert'.

    Thumbprint                                Subject
    ----------                                -------
    AED812AD883826FF76B4D1D5A77B3C08EFA79F3F  CN=P2SChildCert4
    7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655  CN=P2SRootCert
    
  3. Declare uma variável para o certificado raiz usando a impressão digital da etapa anterior. Substitua THUMBPRINT pela impressão digital do certificado raiz do qual você deseja gerar um certificado filho.

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\<THUMBPRINT>"
    

    Por exemplo, usando a impressão digital para P2SRootCert na etapa anterior, a variável teria esta aparência:

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655"
    
  4. Modifique e execute o exemplo para gerar um certificado do cliente. Se você executar o exemplo a seguir sem modificá-lo, o resultado será um certificado do cliente chamado 'P2SChildCert'. Se você deseja nomear o certificado filho diferentemente, modifique o valor de CN. Não altere TextExtension ao executar esse exemplo. O certificado do cliente que você gera é instalado automaticamente em 'Certificates - Current User\Personal\Certificates' em seu computador.

    $params = @{
        Type = 'Custom'
        Subject = 'CN=P2SChildCert'
        DnsName = 'P2SChildCert1'
        KeySpec = 'Signature'
        KeyExportPolicy = 'Exportable'
        KeyLength = 2048
        HashAlgorithm = 'sha256'
        NotAfter = (Get-Date).AddMonths(18)
        CertStoreLocation = 'Cert:\CurrentUser\My'
        Signer = $cert
        TextExtension = @(
         '2.5.29.37={text}1.3.6.1.5.5.7.3.2')
    }
    New-SelfSignedCertificate @params
    

Exportar a chave pública de certificado raiz (.cer)

Após criar um certificado raiz autoassinado, exporte o arquivo .cer do certificado raiz (não a chave privada). Posteriormente, você carregará no Azure os dados de certificado necessários contidos no arquivo. As etapas a seguir ajudam você a exportar o arquivo .cer de seu certificado raiz autoassinado e a recuperar os dados de certificado necessários.

  1. Para obter o arquivo .cer do certificado, abra Gerenciar certificados de usuário.

    Localize o certificado raiz autoassinado, normalmente em "Certificados – Usuário Atual\Pessoal\Certificados", e clique nele com o botão direito do mouse. Clique em Todas as Tarefas ->Exportar. Isso abre o Assistente para Exportação de Certificados.

    Se você não encontrar o certificado em "Usuário\Pessoal\Certificados", pode ser que você tenha aberto acidentalmente "Certificados – Computador Local" em vez de "Certificados – Usuário Atual".

    A captura de tela mostra a janela Certificados com Todas as Tarefas e Exportar selecionados.

  2. No assistente, clique em Próximo.

  3. Selecione Não exportar a chave privada e clique em Avançar.

    A captura de tela mostra Não exportar a chave privada.

  4. Na página Exportar Formato de Arquivo, selecione X.509 codificado em Base 64 (.CER). e clique em Avançar.

    A captura de tela mostra Exportar codificado em Base 64.

  5. Para o Arquivo a ser Exportado, use Procurar para encontrar a localização para a qual você deseja exportar o certificado. Em Nome do arquivo, dê um nome ao arquivo de certificado. Em seguida, clique em Avançar.

  6. Clique em Concluir para exportar o certificado.

  7. Você verá a confirmação de que "A exportação foi bem-sucedida".

  8. Vá para o local em que você exportou o certificado e abra-o usando um editor de texto como o Bloco de Notas. Se você exportou o certificado no formato X.509 codificado em Base 64 necessário (.CER), verá um texto semelhante ao exemplo a seguir. A seção realçada em azul contém as informações que você copia e carrega no Azure.

    A captura de tela mostra o arquivo CER aberto no Bloco de Notas com os dados do certificado realçados.

    Se o arquivo não for semelhante ao exemplo, isso normalmente significa que o certificado não foi exportado usando o formato X.509 codificado em Base 64 (.CER). Além disso, se você usa um editor de texto diferente do Bloco de Notas, é importante saber que alguns editores podem introduzir formatação não intencional em segundo plano. Isso pode criar problemas ao fazer upload do texto desse certificado para o Azure.

Exportar o certificado raiz autoassinado e a chave privada para armazená-lo (opcional)

Convém exportar o certificado raiz autoassinado e armazená-lo com segurança como backup. Se necessário, você poderá instalá-lo posteriormente em outro computador e gerar mais certificados do cliente. Para exportar o certificado raiz autoassinado como um .pfx, selecione o certificado raiz e use as mesmas etapas, conforme descrito em Exportar um certificado do cliente para exportar.

Exportar o certificado do cliente

Quando você gerar um certificado do cliente, ele será instalado automaticamente no computador que você usou para gerá-lo. Se você quiser instalar um certificado do cliente em outro computador cliente, primeiro precisará exportar o certificado do cliente.

  1. Para exportar um certificado de cliente, abra Gerenciar certificados de usuário. Os certificados do cliente que você gerou são, por padrão, localizados em 'Certificates - Current User\Personal\Certificates'. Clique com o botão direito do mouse no certificado do cliente que você deseja exportar, clique em todas as tarefas e clique em exportar para abrir o Assistente para Exportação de Certificados.

    A captura de tela mostra a janela Certificados com Todas as Tarefas e Exportar selecionados.

  2. No Assistente para Exportação de Certificados, clique em Avançar para continuar.

  3. Selecione Sim, exportar a chave privada e, em seguida, clique em Avançar.

    Captura de tela mostrando Sim, exportar a chave privada selecionado.

  4. Na página Formato do Arquivo de Exportação, deixe os padrões selecionados. Verifique se a opção Incluir todos os certificados no caminho de certificação, se possível está selecionada. Adicionalmente, essa exporta as informações sobre o certificado raiz necessárias para uma autenticação de cliente bem-sucedida. Sem isso, a autenticação de cliente irá falhar porque o cliente não possui o certificado raiz confiável. Em seguida, clique em Avançar.

    Captura de tela da página de formato de arquivo de exportação.

  5. Na página Segurança , você deve proteger a chave privada. Se você optar por usar uma senha, não deixe de anotar ou lembrar da senha definida para esse certificado. Em seguida, clique em Avançar.

    A captura de tela mostra a senha inserida e confirmada.

  6. Em Arquivo a ser Exportado, use Procurar para encontrar a localização para a qual você deseja exportar o certificado. Em Nome do arquivo, dê um nome ao arquivo de certificado. Em seguida, clique em Avançar.

  7. Clique em Concluir para exportar o certificado.

Instalar um certificado do cliente exportado

Cada cliente que se conecta por uma conexão P2S requer que um certificado do cliente seja instalado localmente. Para instalar um certificado de cliente, confira Instalar um certificado de cliente para conexões ponto a site.

Próximas etapas

Continue com a configuração de ponto a site.