Guia de Operações e Administração do OpenSSL

Introdução ao OpenSSL e Instalação

O OpenSSL constitui um conjunto de ferramentas e bibliotecas criptográficas de código aberto, amplamente utilizado em comunicações seguras na internet. Este guia apresenta os procedimentos fundamentais para instalação, configuração e utilização do OpenSSL em diferentes ambientes operacionais.

1.1 Visão Geral do OpenSSL

O OpenSSL fornece implementação de algoritmos criptográficos e protocolos de segurança, sendo a base para comunicações seguras na web. Esta ferramenta suporta SSL/TLS, algoritmos simétricos e assimétricos, funções de hash e operações com certificados digitais.

1.2 Instalação em Diferentes Sistemas

Instalação no Ubuntu/Debian

Utilize o gerenciador de pacotes apt para instalar o OpenSSL:

sudo apt update
sudo apt install openssl libssl-dev

Instalação no CentOS/RHEL

Utilize o gerenciador de pacotes yum:

sudo yum install openssl openssl-devel

Instalação no macOS

Através do Homebrew:

brew install openssl

1.3 Configuração Inicial

Após a instalação, configure as variáveis de ambiente necessárias:

export OPENSSL_CONF=/etc/ssl/openssl.cnf
export PATH=$PATH:/usr/local/ssl/bin

Verifique a versão instalada:

openssl version -a

Ferramentas de Linha de Comando do OpenSSL

2.1 Comandos Básicos

A estrutura básica dos comandos OpenSSL segue o padrão:

openssl comando [opções] [argumentos]

Criptografia Simétrica

Exemplo de criptografia usando AES-256-CBC:

openssl enc -aes-256-cbc -salt -in dados.txt -out dados.cripto

Parâmetros utilizados:

  • -aes-256-cbc: Algoritmo AES com modo CBC e chave de 256 bits
  • -salt: Adiciona valor aleatório para fortalecer a criptografia
  • -in: Arquivo de entrada a ser criptografado
  • -out: Arquivo de saída criptografado

Criptografia Assimétrica

Geração de par de chaves RSA:

openssl genpkey -algorithm RSA -out chave_privada.pem -pkeyopt rsa_keygen_bits:2048

Extração da chave pública:

openssl pkey -in chave_privada.pem -pubout -out chave_publica.pem

2.2 Comandos de Hash e Resumo

Cálculo de hash SHA-256:

openssl dgst -sha256 -out hash.txt arquivo.txt

Outros algoritmos disponíveis: md5, sha1, sha512

2.3 Operações com Certificados

Criação de certificado autoassinado:

openssl req -x509 -newkey rsa:2048 -keyout servidor.key -out servidor.crt -days 365 -nodes

Parâmetros:

  • req: Comando para requisições de certificado
  • -x509: Gera certificado autoassinado
  • -newkey: Gera nova chave privada
  • -days: Validade do certificado
  • -nodes: Não criptografa a chave privada

2.4 Formato PKCS#12

Exportação de certificado e chave em formato PKCS#12:

openssl pkcs12 -export -in certificado.crt -inkey chave_privada.pem -out bundle.p12 -name "MeuCertificado"
Comando Descrição
openssl enc Criptografia e descriptografia simétrica
openssl genpkey Geração de chaves privadas
openssl dgst Cálculo de resumos criptográficos
openssl req Gerenciamento de requisições de certificado
openssl pkcs12 Manipulação de certificados PKCS#12

Operações de Criptografia e Descriptografia

3.1 Criptografia Simétrica

Princípios Fundamentais

A criptografia simétrica utiliza a mesma chave para criptografar e descriptografar dados. Esta abordagem oferece desempenho superior, sendo adequada para grandes volumes de dados. Os algoritmos mais comuns incluem AES, DES, 3DES e Blowfish.

Procedimento Prático

Geração de chave simétrica:

openssl rand -base64 32 -out chave_simetrica.key

Criptografia de arquivo:

openssl enc -aes-256-cbc -in documento.txt -out documento.enc -base64 -pass file:chave_simetrica.key

Descriptografia de arquivo:

openssl enc -aes-256-cbc -d -in documento.enc -out documento_recuperado.txt -base64 -pass file:chave_simetrica.key

3.2 Criptografia Assimétrica

Conceitos Básicos

A criptografia assimétrica emprega um par de chaves: pública e privada. A chave pública criptografa dados, enquanto a chave privada descriptografa. Esta tecnologia fundamenta-se em problemas matemáticos complexos como fatoração de números grandes e curvas elípticas.

Exemplo Prático com RSA

Cifração de dados:

openssl rsautl -encrypt -inkey chave_publica.pem -pubin -in mensagem.txt -out mensagem.enc

Decifração de dados:

openssl rsautl -decrypt -inkey chave_privada.pem -in mensagem.enc -out mensagem_decifrada.txt

Observação: A criptografia assimétrica é adequada para dados de tamanho reduzido. Para volumes maiores, recomenda-se usar criptografia híbrida: chave simétrica para dados e chave pública para proteger a chave simétrica.


Gerenciamento de Certificados Digitais

4.1 Geração de Certificados

Certificados digitais contêm a chave pública do titular, informações de identidade, dados da autoridade certificadora e período de validade.

Criação de Requisição de Certificado (CSR)

openssl req -new -key chave_privada.key -out requisicao.csr

Durante o processo, serão solicitados dados como:

  • País (Country Name)
  • Estado/Provincia (State or Province Name)
  • Organização (Organization Name)
  • Unidade Organizacional (Organizational Unit Name)
  • Nome comum (Common Name) - geralmente o domínio

Geração de Certificado Autoassinado

openssl req -x509 -new -nodes -key chave_privada.key -sha256 -days 365 -out certificado.crt

4.2 Gerenciamento de Certificados

Operações de Gestão

  • Armazenamento: Guardar certificados em local seguro, preferencialmente em dispositivos criptografados
  • Renovação: Solicitar novo certificado antes do vencimento
  • Revogação: Invalidar certificados comprometidos
  • Atualização: Substituir certificados expirados

Lista de Certificados Revogados (CRL)

openssl ca -gencrl -revogado.pem -out lista_revogacao.crl

4.3 Cadeia de Certificados

Construção da Cadeia

A cadeia de certificados inclui certificado raiz, certificados intermediários e certificado de folha:

cat raiz.crt intermediario.crt servidor.crt > cadeia_servidor.crt

Validação da Cadeia

Verificação da cadeia de confiança:

openssl verify -CAFile raiz.crt -untrusted intermediario.crt servidor.crt

A cadeia de confiança permite que clientes verifiquem a autenticidade do certificado do servidor através de uma raiz confiável pré-instalada no sistema operacional ou navegador.


Geração e Manipulação de Chaves

5.1 Geração de Chaves

Chaves RSA

openssl genrsa -out minha_chave.pem 4096

Para proteger a chave com senha:

openssl genrsa -aes256 -out chave_protegida.pem 4096

Chaves EC (Curva Elíptica)

openssl genpkey -algorithm EC -out chave_ec.pem -pkeyopt ec_paramgen_curve:prime256v1

5.2 Gerenciamento de Chaves

Backup Criptografado

openssl rsa -in chave.pem -aes256 -out chave_backup.pem

Restaurar Chave

openssl rsa -in chave_backup.pem -out chave_restaurada.pem

Conversão de Formato

Conversão para formato PKCS#8:

openssl pkcs8 -topk8 -inform PEM -in chave.pem -outform PEM -nocrypt

5.3 Importação e Exportação

Exportação de Chave Pública

openssl rsa -in chave_privada.pem -pubout -out chave_pub_exportada.pem

Conversão de PEM para DER

openssl rsa -in chave.pem -outform DER -out chave.der

O gerenciamento adequado de chaves é fundamental para a segurança dos dados. Chaves privadas devem ser armazenadas com segurança máxima e nunca compartilhadas.

Tags: openssl criptografia ssl-tls certificado-digital rsa

Publicado em 6-22 00:26