Domine o OpenSSL: 21 Comandos Essenciais para Certificados SSL

Domine a Criação, Gestão e Conversão de Certificados SSL com OpenSSL

O OpenSSL destaca-se como uma ferramenta de linha de comando amplamente utilizada no universo da segurança digital, especialmente no que diz respeito à manipulação de certificados SSL. Através dele, é possível criar, converter e gerenciar esses importantes componentes da infraestrutura de segurança de forma eficiente.

A versatilidade do OpenSSL faz com que seja uma ferramenta indispensável em diversas situações, e este guia prático tem como objetivo apresentar os comandos mais relevantes para o seu dia a dia.

Neste artigo, exploraremos os comandos do OpenSSL mais frequentemente utilizados em cenários reais, capacitando você a lidar com os desafios do cotidiano.

Para facilitar a compreensão, aqui estão algumas abreviações comuns no contexto de certificados:

  • SSL – Camada de Soquete Seguro
  • CSR – Solicitação de Assinatura de Certificado
  • TLS – Segurança da Camada de Transporte
  • PEM – Correio de Privacidade Aprimorado
  • DER – Regras de Codificação Distintas
  • SHA – Algoritmo de Hash Seguro
  • PKCS – Padrões de Criptografia de Chave Pública

Observação: Para quem está menos familiarizado com esses termos, um curso sobre operações SSL/TLS pode ser muito útil.

Geração de Chave Privada e Solicitação de Assinatura de Certificado (CSR)

openssl req -out etechpt.com.csr -newkey rsa:2048 -nodes -keyout etechpt.com.key

O comando apresentado acima tem como função gerar tanto um arquivo CSR quanto uma chave RSA de 2048 bits. Essa chave e o CSR gerado são essenciais no processo de obtenção de um certificado SSL. Para a utilização em servidores web como Apache ou Nginx, o arquivo CSR deve ser enviado para a autoridade emissora do certificado. Posteriormente, será retornado um certificado assinado, normalmente em formato DER ou PEM, que será configurado no servidor.

Criação de um Certificado Autoassinado

openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Este comando possibilita a criação de um certificado que se autoassina, juntamente com um arquivo de chave RSA de 2048 bits. A inclusão do algoritmo SHA256 garante um nível elevado de segurança.

Dica: Por padrão, certificados autoassinados têm validade de um mês. Ajuste o parâmetro –days para estender este período, se necessário.

Exemplo de certificado autoassinado válido por dois anos:

openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Análise do Arquivo CSR

openssl req -noout -text -in etechpt.com.csr

É fundamental verificar o CSR antes de enviá-lo à autoridade emissora, garantindo que todos os detalhes necessários estão corretos.

Geração de Chave Privada RSA

openssl genrsa -out private.key 2048

Para gerar exclusivamente uma chave privada RSA, utilize este comando. O valor 2048 garante uma criptografia mais robusta.

Remoção da Senha da Chave Privada

openssl rsa -in certkey.key -out nopassphrase.key

Se você utiliza senha no seu arquivo de chave privada, o Apache solicita essa senha a cada reinicialização. Para evitar essa solicitação, este comando remove a senha, embora a segurança deva ser cuidadosamente avaliada ao tomar essa decisão.

Verificação da Chave Privada

openssl rsa -in certkey.key –check

Em caso de dúvidas sobre a integridade da sua chave privada, utilize este comando para realizar uma verificação.

Análise Detalhada do Arquivo de Certificado

openssl x509 -in certfile.pem -text –noout

Este comando permite visualizar os detalhes do seu certificado, como CN, OU, entre outros dados relevantes.

Verificação da Autoridade Emissora do Certificado

openssl x509 -in certfile.pem -noout -issuer -issuer_hash

A autoridade emissora do certificado é quem o assina. Utilize este comando para verificar essa informação.

Verificação do Hash de um Certificado

openssl x509 -noout -hash -in bestflare.pem

Conversão de DER para PEM

openssl x509 –inform der –in sslcert.der –out sslcert.pem

As autoridades de certificação geralmente fornecem certificados no formato .der. Este comando converte para o formato .pem, compatível com Apache, entre outros.

Conversão de PEM para DER

openssl x509 –outform der –in sslcert.pem –out sslcert.der

Utilize este comando quando precisar converter o formato .pem para .der.

Conversão para PKCS#12

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem

Para utilizar um certificado em aplicações Java ou outras que exigem o formato PKCS#12, este comando é essencial. Ele gera um arquivo pfx contendo tanto o certificado quanto a chave privada.

Dica: Inclua a cadeia de certificados usando o parâmetro –chain.

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem

Geração de CSR a partir de uma Chave Privada Existente

openssl req –out certificate.csr –key existing.key –new

Para reutilizar uma chave privada já existente, este comando gera um novo CSR utilizando essa chave.

Análise do Conteúdo de um Certificado no Formato PKCS12

openssl pkcs12 –info –nodes –in cert.p12

O formato PKCS12 é binário, portanto, este comando é indispensável para visualizar o conteúdo do certificado.

Conversão de PKCS12 para PEM

openssl pkcs12 –in cert.p12 –out cert.pem

Este comando converte um certificado no formato pkcs12 para pem, útil para uso em Apache ou em outros softwares compatíveis com este formato.

Teste de Certificado SSL em uma URL

openssl s_client -connect yoururl.com:443 –showcerts

Este comando é utilizado para validar certificados SSL em URLs, verificando protocolos, cifras e outros detalhes do certificado.

Verificação da Versão do OpenSSL

openssl version

É importante verificar a versão do OpenSSL para garantir a segurança.

Verificação da Data de Expiração de um Certificado em Formato PEM

openssl x509 -noout -in certificate.pem -dates

Este comando exibe as datas “notBefore” e “notAfter”. O “notAfter” é a data de expiração.

Exemplo:

[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates
notBefore=Jul 4 14:02:45 2015 GMT
notAfter=Aug 4 09:46:42 2015 GMT
[[email protected] opt]#

Verificação da Data de Expiração de Certificados SSL em URLs

openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate

Utilize este comando para verificar a data de expiração de certificados remotamente.

Exemplo:

[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate

notAfter=Dec 8 00:00:00 2015 GMT

Verificação de Compatibilidade com SSL V2 ou V3 em uma URL

Para verificar o SSL V2:

openssl s_client -connect secureurl.com:443 -ssl2

Para verificar o SSL V3:

openssl s_client -connect secureurl.com:443 –ssl3

Para verificar o TLS 1.0:

openssl s_client -connect secureurl.com:443 –tls1

Para verificar o TLS 1.1:

openssl s_client -connect secureurl.com:443 –tls1_1

Para verificar o TLS 1.2:

openssl s_client -connect secureurl.com:443 –tls1_2

Este comando permite verificar a compatibilidade com versões antigas de SSL/TLS. Em caso de ativação, o comando retornará “CONNECTED”, senão, “handshake failure”.

Verificação de Cifras Específicas em uma URL

openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443

Para verificar se uma cifra específica é aceita, use este comando. Adapte a cifra e o URL de acordo com o seu caso. Se a cifra for aceita, o comando retornará “CONNECTED”, caso contrário, “handshake failure”.

Com este guia, você está mais preparado para usar o OpenSSL na gestão dos seus certificados SSL.