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.
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
- Baixe o instalador para Windows do site oficial do OpenSSL.
- Execute o instalador e instale.
- 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.
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.
Passo 3: Clique em Gerenciar Certificados.
① Ative o certificado CA e faça o upload do arquivo PEM.
② Clique em Adicionar Certificado de Cliente e finalize as configurações necessárias.
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.