Como Gerar um Certificado SSL Autoassinado ou CSR para Nginx e Apache

🔐 Como Criar um Certificado SSL Autoassinado ou Requisição CSR para Nginx e Apache

Em tempos onde a segurança digital é cada vez mais essencial, proteger as conexões entre usuários e servidores com HTTPS se tornou obrigatório. Se você administra servidores Apache ou Nginx, aprender a gerar certificado SSL é uma habilidade fundamental, especialmente se estiver configurando serviços como proxy reverso ou aplicações web internas.

Neste artigo, você vai aprender como criar um certificado SSL autoassinado, ou gerar uma CSR (Certificate Signing Request) para obtenção de um certificado assinado por uma Autoridade Certificadora (CA), usando ferramentas nativas do Linux, como o OpenSSL.

🧱 Etapa 1: Criando a Estrutura de Diretórios

Comece criando um diretório exclusivo no seu ambiente de usuário para armazenar os arquivos de certificados:

mkdir ~/certificados
cd ~/certificados

Aqui você organizará todos os arquivos relacionados: chave privada, CSR, certificado final e o arquivo de configuração do OpenSSL.

🛠️ Etapa 2: Criando o Arquivo de Configuração do OpenSSL

O arquivo openssl.cnf será usado para configurar os campos da requisição do certificado. Crie esse arquivo com o conteúdo a seguir:

vi openssl.cnf

E insira:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = BR
countryName_default = BR
stateOrProvinceName = Sao Paulo
stateOrProvinceName_default = Sao Paulo
localityName = Aracatuba
localityName_default = Aracatuba
organizationalUnitName = RCBrasil
organizationalUnitName_default = RCBrasil
commonName = *.rcbrasil.com.br
commonName_max = 64

[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.rcbrasil.com.br

Você pode substituir *.rcbrasil.com.br pelo domínio ou subdomínio desejado, inclusive usando wildcard para atender múltiplos subdomínios (por exemplo, *.exemplo.com.br).

🔑 Etapa 3: Gerando a Chave Privada

Agora gere a chave privada do certificado:

openssl genrsa -out key.key 2048

Esse arquivo (key.key) é essencial e deve ser protegido com muito cuidado.

📄 Etapa 4: Gerando a CSR (Requisição de Assinatura de Certificado)

Para solicitar um certificado SSL assinado por uma autoridade certificadora, gere a CSR:

openssl req -new -out cert.csr -key key.key -config openssl.cnf

Durante o processo, você verá campos interativos para preenchimento. Caso tenha preenchido o openssl.cnf corretamente, os valores serão automaticamente inseridos, permitindo confirmar com Enter.

🧾 Etapa 5: Criando o Certificado SSL Autoassinado

Se você não pretende usar uma autoridade certificadora, é possível gerar um certificado autoassinado válido por 10 anos, por exemplo:

openssl x509 -req -days 3650 -in cert.csr -signkey key.key -out cert.crt -extensions v3_req -extfile openssl.cnf

Este certificado poderá ser usado em servidores de desenvolvimento, ambientes internos ou sistemas onde não seja necessário um certificado público reconhecido por navegadores.

🧾 Etapa 5: Criando o Certificado SSL Autoassinado

Se você não pretende usar uma autoridade certificadora, é possível gerar um certificado autoassinado válido por até 10 anos:

openssl x509 -req -days 3650 -in cert.csr -signkey key.key -out cert.crt -extensions v3_req -extfile openssl.cnf

Este certificado poderá ser usado em servidores de desenvolvimento, ambientes internos ou sistemas onde não seja necessário um certificado público reconhecido por navegadores.

🧪 Testando Certificados em Servidores

Você pode testar se um servidor está usando corretamente um certificado SSL com os seguintes comandos:

openssl s_client -connect mail.example.com:443
openssl s_client -connect mail.example.com:465
openssl s_client -connect mail.example.com:587 -starttls smtp
openssl s_client -showcerts -connect www.example.com:443 2>/dev/null | openssl x509 -inform pem -noout -text

🔄 Dica Extra: Converter a chave privada para outro formato

Em versões mais antigas do Linux, pode ser necessário converter o formato da chave:

openssl pkcs8 -topk8 -inform PEM -outform DER -in key.key -out key.der -nocrypt

📂 Utilização no Apache e Nginx

Após gerar o certificado (cert.crt) e a chave (key.key), copie os arquivos para o diretório de configuração do seu servidor web, como /etc/ssl/ ou /etc/nginx/ssl/, e referencie-os nos arquivos de configuração do Apache ou Nginx.


📚 Referências

Caso tenha alguma dúvida a respeito deste tópico sinta-se à vontade para entrar em contato

Rolar para cima