Gerar certificados SSL pode ser uma tarefa desafiadora, repleta de frustração e tristeza. Mas não precisa ser assim! Se você possui o Windows 10 e o OpenSSL, com um pouco de ajuda deste tutorial, estará bem encaminhado.
Neste artigo, você aprenderá como instalar o OpenSSL no Windows 10. Uma vez instalado, você poderá gerar certificados SSL, solucionar problemas e debugar certificados, e converter entre formatos.
Vamos começar a dominar o OpenSSL no Windows 10 com o PowerShell!
Relacionado: Gerenciando Certificados com o Windows Certificate Manager e o PowerShell
Pré-requisitos
Neste artigo, você vai aprender de forma prática. Embora o OpenSSL historicamente seja uma utilidade do sistema operacional Linux, você pode usá-lo também no sistema operacional Windows.
- A Windows system with Local Administrator rights – The tutorial will be using Windows 10
- Windows PowerShell 5.1 (incluído no Windows) ou PowerShell 7
- Chocolatey – Um gerenciador de pacotes para o Windows instalado.
- PowerShell ISE, Visual Studio Code ou qualquer editor de texto de sua escolha
Todas as capturas de tela neste guia foram feitas no Windows 10 build 1909 e no PowerShell 7.
Instalando o OpenSSL no Windows 10 com o PowerShell e o Chocolatey
Assumindo que você tenha instalado o Chocolatey usando as instruções de instalação, sua primeira tarefa é instalar o OpenSSL no Windows 10. Para fazer isso, abra o console do PowerShell e execute o comando choco install OpenSSL.Light
como mostrado abaixo.

Isso é tudo! Agora você instalou o OpenSSL com o PowerShell.
Configure um diretório de trabalho
Neste tutorial, você criará alguns certificados para aprender. Para garantir que todo o trabalho feito aqui esteja confinado a uma única pasta que você possa limpar posteriormente, crie uma pasta.
Este tutorial armazenará todos os certificados e arquivos relacionados na pasta C:\certs. Você pode criar uma pasta com o PowerShell executando o comando abaixo.
Agora é hora de configurar o OpenSSL.
Configurando o OpenSSL
Por padrão, o OpenSSL no Windows 10 não vem com um arquivo de configuração. Isso é intencional, pois existem muitas opções de configuração que você pode personalizar. Para fins deste guia, você usará uma amostra de configuração que poderá personalizar posteriormente para melhor atender aos seus requisitos de segurança.
Abra o PowerShell e execute o comando abaixo. Este comando baixa um arquivo de configuração de amostra do MIT e o salva como openssl.cnf no diretório de trabalho atual.
Agora você pode abrir o arquivo openssl.cnf e deve ver algo parecido com o exemplo abaixo.

O download da configuração funcionará como está por enquanto. Não utilize os valores padrão em um ambiente de produção!
Atualize as Variáveis de Ambiente do Perfil do PowerShell
Para que as coisas ocorram sem problemas, você deve modificar o seu perfil do PowerShell no Windows 10. Configurar algumas variáveis de ambiente permite alternar facilmente entre diferentes versões do OpenSSL que você pode ter instalado.
I suggest adding two environment variables to your PowerShell profile called path
and OPENSSL_CONF
. You will update the PATH
environment variable to ensure you can run the openssl binary in any location while on the command line.
Abaixo, você verá uma maneira de criar um perfil do PowerShell, caso ainda não tenha um. Este comando adiciona o caminho binário do OpenSSL ao seu PATH
e atribui o caminho do arquivo de configuração a OPENSSL_CONF
.
Para usar as variáveis de ambiente, recarregue seu perfil digitando . $profile
ou simplesmente feche e reabra o PowerShell.
Agora você pode invocar facilmente o binário do openssl onde quer que esteja no PowerShell, como mostrado abaixo.

Utilizando o OpenSSL no Windows 10 para Gerar um CSR e Chave Privada
Antes de criar um certificado SSL, você precisa gerar uma solicitação de assinatura de certificado (CSR). Um CSR é um arquivo codificado que fornece uma maneira de compartilhar sua chave pública com uma autoridade de certificação (CA). Este arquivo contém informações de identificação, um algoritmo de assinatura e uma assinatura digital. Vamos criar o seu primeiro CSR e chave privada.
Relacionado: Seu Guia para Certificados X509 para Mortais
Para criar um CSR, execute o comando abaixo. O OpenSSL então solicitará que você insira algumas informações de identificação, como você pode ver na demonstração a seguir.

Uma vez concluído, você terá um CSR válido e uma chave privada que podem ser usados para emitir um certificado SSL para você.
As configurações padrão do arquivo de configuração podem ser editadas ainda mais para simplificar este processo, caso você não queira inserir dados toda vez que gerar um CSR.
Você pode ler mais sobre as opções de CSR disponíveis e visualizar configurações de exemplo nas páginas do manual. O OpenSSL também possui um repositório ativo no GitHub com exemplos também.
Gerando Pares de Chaves RSA
Você também pode criar pares de chaves RSA (pública/privada) com o OpenSSL. Para fazer isso, primeiro, crie uma chave privada usando o subcomando genrsa
conforme mostrado abaixo.
Quando você executa o comando abaixo, o OpenSSL no Windows 10 irá gerar uma chave privada RSA com um comprimento de chave de 2048 bits. Esta chave é gerada quase imediatamente em hardware moderno. A chave resultante é exibida no diretório de trabalho
Em seguida, gere uma chave pública usando a chave privada que acabou de criar usando o subcomando rsa
. A sintaxe abaixo criará uma chave pública chamada rsa.public no diretório de trabalho a partir da chave privada rsa.private.
Gerando um Certificado Autoassinado
Às vezes, você pode precisar gerar um certificado autoassinado. Certificados autoassinados são adequados para uso em laboratório, mas não são uma prática segura para uso em um ambiente de produção.
Vamos criar um certificado autoassinado antes de passar para a próxima tarefa. Para fazer isso, digite o comando abaixo para criar um certificado SSL X509. Este certificado usará criptografia SHA256, será válido por 365 dias e terá um comprimento de chave RSA de 2048 bits. O certificado será salvo no diretório de trabalho.
Agora você está pronto para importar o certificado em um navegador ou servidor.
Validação de CSR, Certificados e Chaves com o OpenSSL
Verificando as informações em um CSR, chave privada, certificado ou PKCS#12 pode economizar tempo na solução de erros SSL. Às vezes, uma chave errada pode ter sido usada para criar um certificado, por exemplo. Você pode ter informações de identificação erradas no certificado.
Vamos começar verificando um CSR usando o comando req
e alguns parâmetros:

Detalhes como nome do país, nome da organização e o endereço de e-mail que você inseriu ao criar o CSR no início deste guia devem corresponder precisamente.
Você também pode verificar um certificado usando o subcomando x509
com alguns parâmetros:

Convertendo Certificados com OpenSSL
Há ocasiões em que um aplicativo não utiliza um formato de certificado específico. Você pode encontrar esse problema com um aplicativo chamado HAproxy, por exemplo, que requer um certificado PEM quando você pode ter um certificado formatado como DER (.crt .cer .der).
Para demonstrar a conversão de um certificado, vamos converter o certificado autoassinado criado anteriormente em formato DER (certificado.crt) para PEM. Use o código no seguinte trecho de código para fazer isso.
O comando abaixo usa o subcomando x509
com o parâmetro -inform
que deve corresponder ao formato do arquivo -in
seguido do formato -out
.
Você também pode inverter a ordem se preferir o formato DER a partir de PEM, como mostrado abaixo.
E por último, mas não menos importante, você pode converter PKCS#12 para PEM e PEM para PKCS#12. Este é um tipo de arquivo que contém chaves privadas e certificados. Para converter para o formato PEM, use o sub-comando pkcs12
.
Você também pode converter um certificado PEM e uma chave privada para o formato PKCS#12 usando -export
com algumas opções adicionais. Abaixo está a exportação de um certificado formatado em PKCS#12 usando sua chave privada, utilizando SomeCertificate.crt
como fonte de entrada. O uso da opção -certfile
com o valor MyCACert.crt
permite validar SomeCertificate.crt
.
Resolução de Problemas e Depuração
Agora que você pode criar e converter CSR, certificados e pares de chaves, é hora de aprender a solucionar problemas e depurá-los. O OpenSSL possui comandos que facilitam a resolução de problemas.
O OpenSSL também permite verificar certificados quanto à integridade do arquivo e testar possíveis corrupções de dados. Utilizando um checksum MD5, você pode usar os seguintes exemplos de código para testar certificados, chaves e CSR:
Assim que tiver o hash original, você pode compará-lo com um hash atual para verificar se o certificado não foi modificado ou corrompido.
Aqui está um exemplo de como esse código se parece quando executado no PowerShell:

Resumo
Neste artigo, você aprendeu como instalar e configurar o OpenSSL no Windows 10, criar uma CSR, par de chaves e certificado SSL. Você também aprendeu como converter entre diferentes formatos de certificados e fazer algumas soluções básicas de problemas usando subcomandos integrados.