O OpenSSL é uma ferramenta versátil para gerar chaves privadas, criar solicitações de assinatura de certificado (CSRs) e gerenciar certificados SSL/TLS. Este artigo abordará como identificar sua versão do OpenSSL, usar comandos comuns do OpenSSL e seguir as melhores práticas para proteger suas chaves e certificados.
Verificando Sua Versão do OpenSSL
Identificando Sua Versão do OpenSSL Usando Comandos OpenSSL
Identificar qual versão do OpenSSL você está usando é um primeiro passo importante ao se preparar para gerar uma chave privada ou CSR. Sua versão do OpenSSL determina quais algoritmos criptográficos podem ser usados ao gerar chaves, bem como quais protocolos são suportados. Por exemplo, a versão 1.0.1 do OpenSSL foi a primeira a suportar TLS 1.1 e TLS 1.2.
Use o comando openssl version -a
para identificar qual versão do OpenSSL você está executando. O parâmetro -a
exibe informações completas da versão, incluindo:
- O número da versão e data de lançamento (por exemplo, OpenSSL 1.0.2g 1 Mar 2016)
- As opções que foram compiladas com a biblioteca
- O diretório onde os certificados e chaves privadas são armazenados (OPENSSLDIR)
Aqui está um exemplo de saída ao executar openssl version -a
:
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -
D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-
strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-
Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -
DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -
DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -
DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"
Conhecer sua versão do OpenSSL é importante para determinar quais algoritmos criptográficos e protocolos são suportados ao gerar chaves e CSRs. A saída fornece detalhes importantes como o número da versão, opções de compilação e o diretório padrão de armazenamento de certificados e chaves.
Comandos OpenSSL Comumente Usados
O OpenSSL fornece muitos comandos para gerar chaves privadas, criar CSRs, instalar certificados SSL/TLS e identificar informações de certificados. Aqui estão alguns dos comandos OpenSSL mais usados:
openssl genrsa
: Gera uma chave privada RSA. Exemplo:openssl genrsa -out chave_privada.key 2048
openssl req
: Cria uma CSR ou certificado autoassinado. Exemplo:openssl req -new -key chave_privada.key -out csr.csr
openssl x509
: Mostra informações do certificado, converte formatos e assina CSRs. Exemplo:openssl x509 -in cert.crt -text -noout
openssl pkcs12
: Converte entre os formatos PFX, PEM e DER. Exemplo:openssl pkcs12 -export -out cert.pfx -inkey chave_privada.key -in cert.crt
openssl s_client
: Estabelece uma conexão segura com um servidor remoto. Exemplo:openssl s_client -connect exemplo.com:443
Esses comandos permitem realizar tarefas importantes como gerar chaves privadas fortes, criar CSRs com as informações necessárias, instalar e configurar certificados SSL/TLS e identificar problemas.
Estrutura e Opções de Comando do OpenSSL
A maioria dos comandos OpenSSL segue uma estrutura consistente:
openssl comando [opções] [argumentos]
comando
especifica a operação a ser realizada, comogenrsa
,req
oux509
.[opções]
modificam o comportamento do comando. As opções geralmente começam com um hífen (-
) e podem ter um valor.[argumentos]
fornecem informações adicionais necessárias ao comando, como caminhos de arquivo de entrada e saída.
Algumas opções comumente usadas incluem:
-in
: Especifica o caminho do arquivo de entrada.-out
: Especifica o caminho do arquivo de saída.-keyout
: Especifica o caminho para escrever a nova chave privada.-pubout
: Gera a chave pública de uma chave privada ou CSR.-text
: Imprime o conteúdo de um certificado em formato de texto simples.-noout
: Impede a saída dos dados codificados do certificado.
Por exemplo, o comando openssl x509 -in cert.crt -text -noout
usa o comando x509
para mostrar as informações do certificado em texto simples sem exibir os dados codificados.
Aprender essas estruturas de comando do OpenSSL e opções comumente usadas o ajudará a usar o OpenSSL de forma eficaz para suas necessidades de certificados SSL/TLS.
Gerando Chaves Privadas e CSRs Usando OpenSSL
Escolhendo Opções de Geração de Chaves
Ao criar uma chave privada para seu certificado SSL/TLS, você deve escolher entre os algoritmos de chave RSA e ECDSA. O RSA é amplamente suportado e recomendado para compatibilidade. Você também precisa escolher um tamanho de chave de pelo menos 2048 bits para RSA ou 256 bits para ECDSA. Tamanhos de chave maiores oferecem mais segurança, mas podem afetar o desempenho.
Outra escolha é se deve usar uma frase-senha para criptografar a chave privada. Usar uma frase-senha adiciona uma camada extra de segurança, mas requer que ela seja inserida cada vez que a chave é usada. Frases-senha podem ser úteis se houver risco de acesso não autorizado à chave.
Criando Sua Chave Privada Usando Comandos OpenSSL
Para criar uma chave privada RSA de 2048 bits, use o comando:
openssl genrsa -out seudominio.key 2048
Isso cria um arquivo de chave privada chamado seudominio.key
no formato PEM. Você pode ver o conteúdo bruto e codificado da chave com:
cat seudominio.key
Ou decodificá-lo para ver os detalhes da chave com:
openssl rsa -text -in seudominio.key -noout
Obtendo Sua Chave Pública a partir da Chave Privada
O arquivo de chave privada criado contém tanto a chave privada quanto a pública. Se necessário, você pode extrair apenas a chave pública usando:
openssl rsa -in seudominio.key -pubout -out seudominio_publica.key
Isso cria um arquivo chamado seudominio_publica.key
com a chave pública no formato PEM.
Criando Sua CSR
Para criar uma Solicitação de Assinatura de Certificado (CSR) usando sua chave privada, use:
openssl req -new -key seudominio.key -out seudominio.csr
Isso solicitará que você responda perguntas sobre sua empresa e domínio para incluir na CSR. Ou, forneça todos os detalhes da CSR no comando usando a opção -subj
:
openssl req -new -key seudominio.key -out seudominio.csr \
-subj "/C=BR/ST=São Paulo/L=São Paulo/O=Sua Empresa/OU=TI/CN=seudominio.com"
Você também pode criar a chave privada e a CSR juntas em um único comando:
openssl req -newkey rsa:2048 -keyout seudominio.key -out seudominio.csr
Verificando Informações da CSR
Antes de enviar sua CSR para uma Autoridade Certificadora (CA), verifique se as informações estão corretas com:
openssl req -text -in seudominio.csr -noout -verify
Isso mostra os detalhes da CSR em texto simples. Se alguma informação estiver incorreta, você deve criar uma nova CSR. Detalhes incorretos não podem ser alterados sem criar uma nova CSR devido à assinatura digital.
Ao conhecer essas opções de geração de chaves e comandos OpenSSL, você pode criar chaves privadas fortes e CSRs adequadas para suas necessidades de certificados SSL/TLS.
Gerenciando Certificados
Visualizando Informações do Certificado
Depois de receber seu certificado SSL/TLS da autoridade certificadora (CA), você deve verificar se os detalhes do certificado correspondem à sua chave privada. Use este comando para ver o conteúdo do seu certificado:
openssl x509 -text -in seudominio.crt -noout
Isso mostra as informações do certificado em texto simples sem os dados codificados. Observe a seção Subject Public Key Info para ver os detalhes da chave pública. Certifique-se de que eles correspondam à chave pública nos arquivos da sua CSR e chave privada.
Verificando se Suas Chaves Correspondem
Para verificar se a chave privada do seu certificado, a CSR e o certificado emitido têm a mesma chave pública, você pode extrair a chave pública de cada arquivo e gerar um hash dela. Se os hashes coincidirem, as chaves são as mesmas.
Use estes comandos para obter o hash da chave pública de cada arquivo:
openssl pkey -pubout -in seudominio.key | openssl sha256
openssl req -pubkey -in seudominio.csr -noout | openssl sha256
openssl x509 -pubkey -in seudominio.crt -noout | openssl sha256
Execute cada comando separadamente para obter três hashes. Se todos os hashes forem iguais, as chaves públicas correspondem em sua chave privada, CSR e certificado.
Se os hashes não coincidirem, geralmente significa que a CSR foi criada em uma máquina diferente daquela onde o certificado está sendo instalado. Para corrigir incompatibilidades de chaves, você pode:
- Mover a chave privada da máquina da CSR para a máquina do certificado
- Instalar o certificado na máquina que tem a chave privada correspondente
- Criar uma nova chave privada e CSR na máquina que usará o certificado
Convertendo Formatos de Certificado
Por padrão, o OpenSSL cria chaves privadas e CSRs no formato PEM. Mas você pode precisar convertê-los para outros formatos como PKCS#12 ou DER para certos sistemas.
Para converter um certificado PEM e chave privada em um arquivo PKCS#12 (.pfx
ou .p12
) para transferência:
openssl pkcs12 -export -name "seudominio-digicert-(data de expiração)" \
-out seudominio.pfx -inkey seudominio.key -in seudominio.crt
Isso combina sua chave privada seudominio.key
e certificado seudominio.crt
em um arquivo seudominio.pfx
. A opção -name
define um nome amigável que inclui o domínio e a data de expiração. Você será solicitado a inserir uma senha de criptografia para o arquivo .pfx
.
Para converter um arquivo .pfx
de volta para o formato PEM, use comandos separados para a chave e o certificado:
openssl pkcs12 -in seudominio.pfx -nocerts -out seudominio.key -nodes
openssl pkcs12 -in seudominio.pfx -nokeys -clcerts -out seudominio.crt
O primeiro comando extrai a chave privada e o segundo extrai o certificado. A opção -nodes
remove a criptografia da chave privada.
Para converter entre os formatos PEM e DER, use os comandos x509
e rsa
com as opções -inform
e -outform
:
openssl x509 -inform PEM -in seudominio.crt -outform DER -out seudominio.der
openssl rsa -inform PEM -in seudominio.key -outform DER -out seudominio_chave.der
Esses comandos convertem um certificado PEM para DER e uma chave privada PEM para DER. Para voltar de DER para PEM, basta trocar os valores de -inform
e -outform
.
Usando esses comandos OpenSSL para visualizar, verificar e converter seus certificados e chaves SSL/TLS, você pode gerenciá-los e instalá-los adequadamente em seus servidores, como Apache Tomcat ou IIS.
Listando Conjuntos de Cifras
Conjuntos de cifras são conjuntos de algoritmos usados para proteger conexões de rede com SSL/TLS. Eles incluem algoritmos de troca de chaves, autenticação, criptografia e hash. Para ver quais conjuntos de cifras sua versão do OpenSSL suporta, use o seguinte comando:
openssl ciphers -v
Isso mostra os nomes completos de cada conjunto de cifras suportado. Os nomes seguem um formato como:
Protocolo-TrocaDeChaves-Autenticação-Criptografia-Hash
Por exemplo, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
usa:
- Protocolo TLS
- Troca de chaves ECDHE
- Autenticação RSA
- Criptografia AES-256 no modo GCM
- Hash SHA384
Conhecer essas partes da nomenclatura pode ajudar a escolher conjuntos de cifras que atendam às suas necessidades de segurança, compatibilidade e desempenho.
Criando e Verificando Hashes
Hashes são resumos únicos e de tamanho fixo feitos a partir de dados. Eles ajudam a verificar a integridade de arquivos e mensagens. Use comandos OpenSSL para criar hashes de chaves e certificados:
openssl dgst -sha256 seudominio.key
openssl dgst -sha256 seudominio.csr
openssl dgst -sha256 seudominio.crt
Esses comandos criam hashes SHA-256 dos arquivos de sua chave privada, CSR e certificado. Você pode mudar sha256
para outros algoritmos de hash como md5
, sha1
ou sha512
.
Para verificar a integridade de um arquivo, faça o hash dele e compare com um valor de hash conhecido como correto. Se eles coincidirem, o arquivo não foi alterado. Isso é frequentemente usado para downloads de arquivos para garantir que não foram danificados ou alterados.
Ao listar conjuntos de cifras suportados e criar hashes de arquivos, você pode melhorar a segurança e verificar sua configuração SSL/TLS com o OpenSSL.
Depuração e Solução de Problemas
Problemas Comuns do OpenSSL e Suas Soluções
Ao trabalhar com OpenSSL para gerar chaves, criar CSRs e instalar certificados SSL/TLS, você pode encontrar alguns problemas comuns. Aqui estão alguns problemas e como solucioná-los:
-
Problemas de instalação e configuração de certificados: Verifique se os caminhos dos arquivos de certificado estão corretos na configuração do seu servidor web. Certifique-se de que o certificado e a chave privada estejam nos formatos corretos (PEM ou PKCS#12) exigidos pelo seu servidor.
-
Incompatibilidades entre chave privada e certificado: Verifique se a chave privada usada para gerar a CSR corresponde à usada durante a instalação do certificado. Compare os hashes das chaves públicas nos arquivos de chave privada, CSR e certificado. Se não coincidirem, gere novamente a CSR com a chave privada correta.
-
Problemas de permissão e propriedade de arquivos:Verifique se os arquivos de chave privada e certificado têm as permissões e propriedades corretas definidas para que o processo do seu servidor web possa lê-los. Por exemplo, no Linux, você pode precisar definir as permissões com
chmod 400 seudominio.key
e a propriedade comchown www-data:www-data seudominio.key
. -
Erros de comando OpenSSL: Se você receber erros ao executar comandos OpenSSL, verifique novamente a sintaxe, as opções e os caminhos dos arquivos. Certifique-se de estar usando os comandos corretos para sua versão do OpenSSL e que os arquivos estejam nos formatos certos.
Identificando Versões e Configurações TLS
É importante verificar se seu OpenSSL e servidor web estão configurados para usar as versões mais recentes do TLS e conjuntos de cifras fortes. Veja como verificar:
-
Verifique o suporte à versão TLS do seu OpenSSL: Use o comando
s_client
para ver a versão TLS usada para uma conexão:openssl s_client -connect seudominio.com:443 -tls1_2
Substitua
seudominio.com
pelo nome do seu domínio. A opção-tls1_2
testa uma conexão TLS 1.2. Você pode alterá-la para-tls1
,-tls1_1
ou-tls1_3
para testar outras versões. Uma conexão bem-sucedida significa que essa versão TLS é suportada. -
Verifique a configuração TLS do seu servidor web: Verifique as configurações SSL/TLS do seu servidor web para garantir que ele esteja configurado para usar TLS 1.2 ou 1.3 e não versões antigas como SSL 3.0 ou TLS 1.0. Por exemplo, no Apache, você pode ver configurações como:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite HIGH:!aNULL:!MD5
Isso desativa SSL 3.0, TLS 1.0 e TLS 1.1 enquanto habilita conjuntos de cifras de alta resistência. Consulte a documentação do seu servidor web para as configurações TLS adequadas.
-
Use ferramentas de teste SSL/TLS: Ferramentas online como o SSL Labs Server Test podem verificar a configuração SSL/TLS do seu servidor e encontrar problemas com o certificado, versões de protocolo ou conjuntos de cifras.
Ao identificar e corrigir esses problemas comuns do OpenSSL e garantir que você tenha uma configuração TLS segura, você pode melhor depurar e solucionar problemas na sua configuração SSL/TLS para seus domínios.
Melhores Práticas
Gerenciando Chaves Privadas e Certificados com Segurança
As chaves privadas são a base da sua segurança SSL/TLS. É importante gerá-las, armazená-las e protegê-las adequadamente. Aqui estão algumas melhores práticas:
- Gere chaves privadas com pelo menos 2048 bits RSA ou 256 bits ECDSA para uma segurança forte
- Use uma frase-senha para criptografar o arquivo da chave privada para uma camada extra de proteção
- Armazene as chaves privadas em um local seguro com controles de acesso rigorosos, como um cofre trancado ou um módulo de segurança de hardware (HSM) criptografado
- Limite o acesso às chaves privadas apenas aos administradores que realmente precisam
- Nunca compartilhe chaves privadas por canais inseguros como e-mail ou mensagens
- Faça rotação e atualize regularmente as chaves privadas, especialmente se houver qualquer chance de comprometimento
Os certificados SSL/TLS também precisam ser cuidadosamente gerenciados e implantados. Algumas diretrizes incluem:
- Use uma autoridade certificadora (CA) confiável e respeitável para emitir seus certificados
- Escolha o tipo certo de certificado para suas necessidades, como domínio único, multidomínio ou wildcard
- Entregue com segurança a solicitação de assinatura de certificado (CSR) à CA, como por meio de um formulário web criptografado ou e-mail
- Armazene os certificados em um local protegido, com acesso limitado para administradores
- Instale e configure corretamente os certificados em seus servidores web, balanceadores de carga e outros endpoints SSL/TLS
- Acompanhe as datas de expiração dos certificados e renove-os antes que expirem para evitar tempo de inatividade
- Substitua os certificados se a chave privada for comprometida ou se o certificado precisar ser revogado por qualquer motivo
Mantendo o OpenSSL Atualizado
Usar a versão mais recente do OpenSSL é importante para obter as mais novas correções de segurança, suporte a protocolos e algoritmos, e recursos. Versões mais antigas podem ter vulnerabilidades conhecidas que os atacantes podem explorar.
Verifique sua versão do OpenSSL com openssl version
e compare-a com as versões mais recentes no site do OpenSSL. Se você não estiver na versão mais recente, atualize-a assim que possível.
O processo de atualização depende do seu sistema operacional e ambiente:
- No Linux, use seu gerenciador de pacotes para instalar a versão mais recente do OpenSSL. Por exemplo, no Ubuntu ou Debian:
sudo apt update sudo apt install openssl
- No Windows, baixe o instalador ou binários mais recentes do OpenSSL do site oficial ou de um provedor terceirizado confiável. Substitua seu diretório OpenSSL antigo pela nova versão.
- Para linguagens de programação e frameworks como Python, Ruby ou Node.js, atualize a biblioteca OpenSSL que eles usam. Isso pode significar atualizar a própria linguagem/framework ou quaisquer bibliotecas wrapper SSL/TLS.
- Em servidores web como Apache ou Nginx, atualize a versão do servidor ou os módulos OpenSSL para obter a versão mais recente. Verifique a documentação do servidor para instruções específicas de atualização.
Após atualizar o OpenSSL, certifique-se de testar sua configuração SSL/TLS e certificados para garantir que tudo ainda esteja funcionando corretamente. Ferramentas como o SSL Labs podem ajudar a identificar quaisquer problemas.
Seguindo essas melhores práticas para gerenciar com segurança chaves e certificados e manter o OpenSSL atualizado, você pode proteger melhor sua configuração SSL/TLS e os dados de seus usuários.
Monitorando Certificados SSL
Monitorar seus certificados SSL é uma parte crucial da manutenção de um site seguro e confiável. Certificados SSL expirados ou mal configurados podem levar a vulnerabilidades de segurança e uma experiência ruim para o usuário. A Uptimia oferece um serviço de Monitoramento de Certificado SSL que ajuda você a acompanhar a saúde e validade dos seus certificados. Com a Uptimia, você pode receber alertas quando um certificado estiver perto de expirar ou tiver problemas técnicos, como nomes de domínio incompatíveis, algoritmos de criptografia fracos ou cadeias de certificados inválidas. Ao monitorar proativamente seus certificados SSL com a Uptimia, você pode ficar tranquilo sabendo que seu site permanece seguro e acessível para seus usuários.
Principais Conclusões
- Use o comando
openssl version -a
para identificar sua versão do OpenSSL, opções de compilação e diretório padrão de armazenamento de certificados e chaves - Comandos OpenSSL comuns incluem
genrsa
para gerar chaves privadas,req
para criar CSRs,x509
para visualizar e converter certificados,pkcs12
para converter formatos es_client
para testar conexões seguras - Ao gerar chaves privadas, escolha entre algoritmos RSA (recomendado) e ECDSA, use um tamanho de chave de pelo menos 2048 bits para RSA ou 256 bits para ECDSA, e considere usar uma frase-senha para segurança adicional
- Use comandos OpenSSL para visualizar informações de certificados, verificar correspondências de chaves, converter entre formatos PEM, PKCS#12 e DER, listar conjuntos de cifras suportados e criar hashes de arquivos
- Siga as melhores práticas, como gerar chaves privadas fortes, usar uma CA confiável, armazenar e gerenciar com segurança chaves e certificados, e manter o OpenSSL atualizado para proteger sua configuração SSL/TLS