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.