Apidog

Plataforma Colaborativa All-in-one para Desenvolvimento de API

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Guia Completo do OpenSSL! Explicação Prática desde a Instalação até a Criação de Certificados

Miguel Oliveira

Miguel Oliveira

Updated on dezembro 6, 2024

OpenSSL é uma ferramenta importante para criptografar comunicações na internet e fortalecer a segurança.

Introdução

Para aqueles que estão se perguntando: "O que é um certificado?" e "Ouvi dizer que deveria usar o OpenSSL...". Este artigo explica de maneira clara desde o básico do uso do OpenSSL até como criar certificados, voltado para iniciantes. Iremos apoiar você para que compreenda com fluência as configurações de comunicação criptografada e como lidar com certificados.

💡
Antes de entrar em detalhes, se você está desenvolvendo uma API ou construindo uma aplicação, faça o download do Apidog gratuitamente e gerencie testes de API, design e documentação como um profissional.
button
cliente apidog

O que é OpenSSL?

OpenSSL é um kit de ferramentas de criptografia de código aberto. Ele é usado principalmente para criptografar comunicações SSL/TLS e para criptografar e descriptografar dados. É amplamente utilizado para enviar e receber informações de forma segura na internet.

Vantagens do OpenSSL

Usar OpenSSL facilita a segurança de sites, criptografia de e-mails e criptografia de arquivos. Além disso, você pode criar seus próprios certificados, o que permite alcançar alta segurança com custos reduzidos.

  • Disponível gratuitamente
  • Suporte amplo
  • Alta confiabilidade

Pontos de aprendizado para iniciantes

Ao aprender OpenSSL, é importante primeiro entender a instalação e os comandos básicos. Depois, familiarize-se com a criação de certificados e técnicas de criptografia para adquirir habilidades práticas.

Configuração do ambiente

Para começar a usar o OpenSSL, primeiro você precisa preparar o ambiente. Esta seção explica desde a preparação dos requisitos até os passos de instalação.

Requisitos

Para usar o OpenSSL, você precisará do seguinte:

  • Conexão à internet (necessária para baixar o pacote de instalação).
  • Instalação do OpenSSL
  • Ferramenta de linha de comando (PowerShell no Windows, terminal no macOS ou Linux)

Passos de instalação

Windows

  1. Baixe o instalador para Windows do site oficial do OpenSSL.
  2. Execute o instalador e instale.
  3. Adicione o OpenSSL à variável de ambiente PATH.

macOS

No macOS, você pode instalar facilmente usando o Homebrew. Execute o seguinte comando:

brew install openssl
  • Se o Homebrew não estiver instalado, siga as instruções no site oficial para instalá-lo.

Linux

No Linux, você irá instalar usando um gerenciador de pacotes. Por exemplo, no Ubuntu, use o seguinte comando:

sudo apt install openssl
  • Abra o terminal e use o gerenciador de pacotes para instalar.
sudo apt-get install openssl

Verificação de funcionamento

Após a instalação, verifique se foi instalada corretamente usando o seguinte comando:

openssl version

Se a versão aparecer, a instalação foi bem-sucedida.

Operações básicas

Usaremos o OpenSSL para realizar operações básicas.

Comando de ajuda

O OpenSSL possui muitos comandos e opções. Você pode exibir a ajuda com o seguinte comando:

openssl help

Verificação de versão

Para verificar a versão do OpenSSL instalado, execute o seguinte comando:

openssl version

Criptografia e Descriptografia

Com o OpenSSL, você pode criptografar e descriptografar dados.

Criptografia

Para criptografar um arquivo, use o seguinte comando:

openssl enc -aes-256-cbc -in plaintext.txt -out encrypted.txt

Descriptografia

Para descriptografar um arquivo criptografado, use o seguinte comando:

openssl enc -d -aes-256-cbc -in encrypted.txt -out decrypted.txt

Cálculo de hash

Para calcular o valor de hash de arquivos ou strings, use o seguinte comando:

openssl dgst -sha256 file.txt

Criação de certificados

A partir daqui, aprenderemos como criar certificados usando o OpenSSL. Os certificados são necessários para estabelecer comunicações seguras e comprovam a identidade do servidor ou cliente. Siga os passos abaixo, desde a geração da chave secreta até a emissão de um certificado auto-assinado e a criação de um certificado CA.

O que é uma chave secreta?

A chave secreta desempenha um papel crucial na criptografia. No esquema de criptografia de chave pública, utiliza-se um par de chaves: a chave pública e a chave secreta para realizar comunicações seguras.

O que é CSR (Solicitação de Assinatura de Certificado)?

CSR é um pedido necessário para que um certificado seja emitido. O CSR contém informações sobre a chave pública e informações de identificação.

É como os documentos necessários quando você solicita um passaporte. Ao criar um CSR, você precisará inserir as seguintes informações.

Nome do campo Descrição Exemplo
Nome do país (C) Insira o nome do país com um código de 2 letras. BR
Nome do estado ou província (ST) Insira o nome do estado ou província. São Paulo
Nome da localidade (L) Insira o nome do município. São Paulo
Nome da organização (O) Insira o nome da empresa ou organização. Exemplo Corp
Nome da unidade organizacional (OU) Insira o nome do departamento. Departamento de TI
Nome comum (CN) Insira o FQDN (nome de domínio totalmente qualificado) do servidor. www.exemplo.com
Endereço de e-mail Insira o endereço de e-mail do responsável. admin@exemplo.com

Insira essas informações para criar o CSR.

openssl req -new -key private.key -out request.csr

Este é um exemplo de execução ao criar um CSR.

openssl req -new -key private.key -out request.csr
Você será solicitado a inserir informações que serão incorporadas
na sua solicitação de certificado.
O que você está prestes a inserir é chamado de Nome Distinto ou DN.
Existem vários campos, mas você pode deixar alguns em branco.
Para alguns campos, haverá um valor padrão,
Se você digitar '.', o campo será deixado em branco.

-----
Nome do país (código de 2 letras) [AU] BR
Nome do estado ou província (nome completo) [Some-State] São Paulo
Nome da localidade (ex, cidade) [] São Paulo
Nome da organização (ex, empresa) [Internet Widgits Pty Ltd] Exemplo Corp
Nome da unidade organizacional (ex, seção) [] Departamento de TI
Nome comum (ex, FQDN do servidor ou SEU nome) [] www.exemplo.com
Endereço de e-mail [] admin@exemplo.com

Por favor, insira os seguintes atributos 'extras'
a serem enviados com sua solicitação de certificado
Uma senha de desafio [] 
Um nome de empresa opcional []

Você será solicitado a inserir informações como as acima. Os campos Uma senha de desafio e Um nome de empresa opcional são atributos adicionais que poderão ser solicitados, mas normalmente não precisam ser preenchidos, pois não afetam diretamente a segurança ou funcionalidade do certificado. Pressione a tecla Enter para prosseguir, a menos que seja realmente necessário.

Outro campo que pode ser solicitado é o Nome Alternativo do Sujeito (SAN). Isso permite que um único certificado suporte vários nomes de domínio. Geralmente, para especificar isso, usa-se um arquivo de configuração ao criar o CSR.

Criação de certificado auto-assinado

Um certificado auto-assinado é um certificado que você emite para si mesmo e pode ser usado para testes ou experimentos. O método de criação é o seguinte:

Nome do campo Descrição Exemplo
Nome do país (C) Insira o nome do país com um código de 2 letras. BR
Nome do estado ou província (ST) Insira o nome do estado ou província. São Paulo
Nome da localidade (L) Insira o nome do município. São Paulo
Nome da organização (O) Insira o nome da empresa ou organização. Exemplo Corp
Nome da unidade organizacional (OU) Insira o nome do departamento. Departamento de TI
Nome comum (CN) Insira o FQDN (nome de domínio totalmente qualificado) do servidor. www.exemplo.com
Endereço de e-mail Insira o endereço de e-mail do responsável. admin@exemplo.com
Validade do certificado (dias) Insira o período de validade do certificado em dias. 365
openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout mykey.key -out mycert.csr
openssl x509 -req -in mycert.csr -signkey mykey.key -out mycert.crt

Emissão de certificado CA

O certificado CA é um certificado emitido por uma autoridade certificadora confiável, utilizado para manter a comunicação segura na internet. Para criar um certificado CA, siga os passos abaixo.

Geração de chave secreta

Antes de emitir o certificado CA, você deve gerar a chave secreta do CA:

openssl genpkey -algorithm RSA -out ca.key

Emissão do certificado CA

Em seguida, emita o certificado auto-assinado do CA. Insira as seguintes informações:

Nome do campo Descrição Exemplo
Nome do país (C) Insira o nome do país com um código de 2 letras. BR
Nome do estado ou província (ST) Insira o nome do estado ou província. São Paulo
Nome da localidade (L) Insira o nome do município. São Paulo
Nome da organização (O) Insira o nome da empresa ou organização. Exemplo Corp
Nome da unidade organizacional (OU) Insira o nome do departamento. Departamento de TI
Nome comum (CN) Insira o FQDN (nome de domínio totalmente qualificado) do servidor. www.exemplo.com
Endereço de e-mail Insira o endereço de e-mail do responsável. admin@exemplo.com
Validade do certificado (dias) Insira o período de validade do certificado em dias. 365
openssl req -new -x509 -key ca.key -out ca.crt -days 365

Criação de certificados com configurações detalhadas (opcional)

Usando um arquivo de configuração, você pode criar certificados mais avançados.

Criação de CSR usando um arquivo de configuração

Usando um arquivo de configuração, você pode criar solicitações de certificados complexas de forma simples.

  • 1. Crie um arquivo de configuração (exemplo: csr_config.cnf).
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[ req_distinguished_name ]
C = BR
ST = São Paulo
L = São Paulo
O = Exemplo Corp
OU = Departamento de TI
CN = www.exemplo.com
emailAddress = admin@exemplo.com

[ v3_req ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = www.exemplo.com
DNS.2 = exemplo.com
  • 2. Crie o CSR usando o arquivo de configuração.
openssl req -new -key private.key -out request.csr -config csr_config.cnf

Criação de certificado auto-assinado usando um arquivo de configuração

Usar um arquivo de configuração também permite automatizar a criação de certificados auto-assinados.

  • 1. Crie um arquivo de configuração (exemplo: selfsigned_config.cnf).
[req] distinguished_name = req_distinguished_name x509_extensions = v3_ca prompt = no
[ req_distinguished_name ]
C = BR
ST = São Paulo
L = São Paulo
O = Exemplo Corp
OU = Departamento de TI
CN = www.exemplo.com
emailAddress = admin@exemplo.com

[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
```
  • 2. Crie um certificado auto-assinado usando o arquivo de configuração.
openssl req -x509 -key private.key -out selfsigned.crt -days 365 -config selfsigned_config.cnf

Criação de certificado CA usando um arquivo de configuração

A emissão de certificados CA também pode ser realizada de forma eficiente usando um arquivo de configuração.

  • 1. Crie um arquivo de configuração (exemplo: ca_config.cnf).
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
prompt = no

[ req_distinguished_name ]
C = BR
ST = São Paulo
L = São Paulo
O = Exemplo Corp
OU = Departamento de TI
CN = Exemplo CA
emailAddress = admin@exemplo.com

[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
  • 2. Crie o certificado CA usando o arquivo de configuração.
openssl req -x509 -key ca.key -out ca.crt -days 3650 -config ca_config.cnf

Dessa forma, você pode armazenar os campos necessários ao criar cada certificado no arquivo de configuração, evitando a necessidade de inserir as mesmas informações repetidamente. O uso de arquivos de configuração simplifica o processo de criação de certificados e torna mais fácil o seu manejo.

Procedimento: Adicionando um certificado SSL ao Apidog

Para aumentar a segurança da API, algumas APIs têm certificados de cliente ativados. Isso significa que, ao enviar uma solicitação para a API, você deve anexar e enviar o certificado de cliente SSL.

button

Nesta seção, apresentaremos o procedimento para adicionar o certificado de cliente SSL ao cliente da API e enviar a solicitação para obter a resposta. É recomendável usar o Apidog, que permite adicionar facilmente o certificado SSL. O Apidog é uma ferramenta de gerenciamento de ciclo de vida de API que facilita o gerenciamento de solicitações e respostas da API, automação de testes de API, criação de servidores mock, entre outras funções, e permite adicionar facilmente certificados SSL do lado do cliente para obter respostas de servidores SSL.

Agora, consulte os próximos passos para adicionar o certificado SSL ao cliente da API e realizar a comunicação criptografada da API.

Passo 1: Inicie o Apidog e abra a API que requer o certificado de cliente SSL.

Passo 2: Mude para o modo Design, selecione a aba Alterar na barra de menu superior e clique em Configurações nos parâmetros de solicitação.

cliente apidog

Passo 3: Clique em Gerenciar Certificados.

① Ative o certificado CA e faça o upload do arquivo PEM.

Gerenciamento de certificado CA

② Clique em Adicionar Certificado de Cliente e finalize as configurações necessárias.

Adicionar certificado

Resumo

OpenSSL é uma ferramenta indispensável para manter a segurança das comunicações na internet. Desde a criação de certificados até criptografia, descriptografia e cálculo de hash, ela pode atender a várias finalidades. Aprenda essas operações básicas e aprofunde seus conhecimentos sobre segurança.