Crie, gerencie e converta certificados SSL com OpenSSL
Um dos comandos mais populares em SSL para criar, converter e gerenciar os Certificados SSL é o OpenSSL.
Haverá muitas situações em que você terá que lidar com o OpenSSL de várias maneiras, e aqui as listei para você como uma folha de dicas útil.
Neste artigo, falarei sobre os comandos OpenSSL usados com frequência para ajudá-lo no mundo real.
Algumas das abreviações relacionadas a certificados.
- SSL – Secure Socket Layer
- CSR – Solicitação de assinatura de certificado
- TLS – Segurança da Camada de Transporte
- PEM – Email de Privacidade Aprimorada
- DER – Regras de Codificação Distintas
- SHA – Algoritmo de hash seguro
- PKCS – Padrões de Criptografia de Chave Pública
Observação: Curso de operação SSL/TLS seria útil se você não estiver familiarizado com os termos.
últimas postagens
Crie uma nova chave privada e solicitação de assinatura de certificado
openssl req -out etechpt.com.csr -newkey rsa:2048 -nodes -keyout etechpt.com.key
O comando acima gerará CSR e um arquivo de chave RSA de 2048 bits. Se você pretende usar este certificado no Apache ou Nginx, então você precisa enviar este arquivo CSR para a autoridade do emissor do certificado, e eles lhe darão um certificado assinado principalmente no formato der ou pem que você precisa configurar no servidor web Apache ou Nginx .
Criar um certificado autoassinado
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
O comando acima gerará um certificado autoassinado e um arquivo de chave com RSA de 2.048 bits. Também incluí o sha256, pois é considerado o mais seguro no momento.
Dica: por padrão, ele gerará um certificado autoassinado válido por apenas um mês, portanto, considere definir o parâmetro –days para estender a validade.
Ex: ter autoassinado válido por dois anos.
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Verifique o arquivo CSR
openssl req -noout -text -in etechpt.com.csr
A verificação é essencial para garantir que você está enviando o CSR para a autoridade do emissor com os detalhes necessários.
Criar chave privada RSA
openssl genrsa -out private.key 2048
Se você só precisa gerar a chave privada RSA, pode usar o comando acima. Incluí 2048 para criptografia mais forte.
Remover senha da chave
openssl rsa -in certkey.key -out nopassphrase.key
Se você estiver usando a senha no arquivo de chave e usando o Apache, toda vez que iniciar, deverá inserir a senha. Se você estiver incomodado com a digitação de uma senha, poderá usar o comando openssl rsa -in etechpt.com.key -check acima para remover a chave de senha de uma chave existente.
Verificar chave privada
openssl rsa -in certkey.key –check
Se você duvida do seu arquivo de chave, pode usar o comando acima para verificar.
Verificar arquivo de certificado
openssl x509 -in certfile.pem -text –noout
Se você deseja validar os dados do certificado, como CN, OU, etc., pode usar um comando acima que fornecerá detalhes do certificado.
Verifique a autoridade do signatário do certificado
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
A autoridade do emissor do certificado assina todos os certificados e, caso seja necessário, verifique-os.
Verifique o valor de hash de um certificado
openssl x509 -noout -hash -in bestflare.pem
Converta o formato DER para PEM
openssl x509 –inform der –in sslcert.der –out sslcert.pem
Normalmente, a autoridade de certificação fornecerá o certificado SSL no formato .der e, se você precisar usá-los no formato apache ou .pem, o comando acima o ajudará.
Converta o formato PEM para DER
openssl x509 –outform der –in sslcert.pem –out sslcert.der
Caso precise alterar o formato .pem para .der
Converter certificado e chave privada para o formato PKCS#12
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem
Se você precisar usar um certificado com o aplicativo java ou com qualquer outro que aceite apenas o formato PKCS#12, você pode usar o comando acima, que irá gerar um único pfx contendo certificado e arquivo de chave.
Dica: você também pode incluir o certificado da cadeia passando –chain conforme abaixo.
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem
Criar CSR usando uma chave privada existente
openssl req –out certificate.csr –key existing.key –new
Se você não deseja criar uma nova chave privada em vez de usar uma existente, pode usar o comando acima.
Verifique o conteúdo do certificado de formato PKCS12
openssl pkcs12 –info –nodes –in cert.p12
PKCS12 é um formato binário, portanto você não poderá visualizar o conteúdo no bloco de notas ou em outro editor. O comando acima ajudará você a ver o conteúdo do arquivo PKCS12.
Converter formato PKCS12 para certificado PEM
openssl pkcs12 –in cert.p12 –out cert.pem
Se você deseja usar o formato pkcs12 existente com o Apache ou apenas no formato pem, isso será útil.
Testar certificado SSL de determinado URL
openssl s_client -connect yoururl.com:443 –showcerts
Eu uso isso com bastante frequência para validar o certificado SSL de uma URL específica do servidor. Isso é muito útil para validar o protocolo, a cifra e os detalhes do certificado.
Descubra a versão do OpenSSL
openssl version
Se você é responsável por garantir que o OpenSSL seja seguro, provavelmente uma das primeiras coisas que você deve fazer é verificar a versão.
Verifique a data de expiração do certificado de arquivo PEM
openssl x509 -noout -in certificate.pem -dates
Útil se você planeja colocar algum monitoramento para verificar a validade. Ele mostrará uma data na sintaxe notBefore e notAfter. notAfter é aquele que você terá que verificar para confirmar se um certificado expirou ou ainda é válido.
Ex:
[[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]#
Verifique a data de expiração do certificado do URL SSL
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate
Outro recurso útil se você planeja monitorar a data de expiração do certificado SSL remotamente ou um URL específico.
Ex:
[[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
Verifique se o SSL V2 ou V3 é aceito na 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
Se você estiver protegendo um servidor da Web e precisar validar se o SSL V2/V3 está ativado ou não, use o comando acima. Se ativado, você obterá “CONNECTED” senão “falha de handshake”.
Verifique se a cifra específica é aceita na URL
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
Se você estiver trabalhando em descobertas de segurança e os resultados do teste de caneta mostrarem que algumas das cifras fracas são aceitas, então, para validar, você pode usar o comando acima.
Obviamente, você terá que alterar a cifra e o URL com os quais deseja testar. Se a cifra mencionada for aceita, você obterá “CONNECTED” senão “falha de handshake”.
Espero que os comandos acima ajudem você a saber mais sobre o OpenSSL para gerenciar certificados SSL para o seu site.