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.