Como Gerar CSR e KEY para Certificado SSL no Apache usando OpenSSL
Ao configurar um certificado SSL manualmente em um servidor Apache, é necessário gerar dois arquivos essenciais:
- Arquivo
.key→ Chave privada do certificado - Arquivo
.csr→ Certificate Signing Request, utilizado para solicitar o certificado à autoridade certificadora
⚠️ Atenção:
Não é recomendado reutilizar um CSR antigo. Sempre gere um novo par de arquivos (.key e .csr), pois o reaproveitamento pode representar um risco de segurança.
Estrutura de Diretórios para os Certificados
Antes de iniciar, crie um diretório específico para armazenar os arquivos SSL do domínio:
/etc/httpd/ssl/meudominio/novocertificado
Gerando o CSR e a Chave Privada com OpenSSL
Execute o comando abaixo no servidor:
openssl req -new -newkey rsa:2048 -nodes \
-keyout meudominio.key \
-out meudominio.csr
Durante o processo, o OpenSSL solicitará algumas informações. Utilize os dados conforme o exemplo:
- Country Name (Código do País): BR
- State or Province Name (Estado): Paraná
- Locality Name (Cidade): Curitiba
- Organization Name (Nome da Empresa): Nome da sua empresa
- Organizational Unit Name (Setor): TI
- Common Name (Domínio com www): www.meudominio.com.br
- Email Address: contato@meudominio.com.br
- Challenge Password: (deixe em branco)
- Optional Company Name: (deixe em branco)
Arquivos Gerados
Após a execução do comando, serão criados os seguintes arquivos:
meudominio.csrmeudominio.key
Copie todo o conteúdo do arquivo .csr e cole no formulário de solicitação do certificado SSL junto à autoridade certificadora (Namecheap, GoDaddy, Cloudflare, etc.).
📌 Em alguns casos, pode ser solicitado também o envio do arquivo .key.
Arquivo CA Bundle
Após a emissão do certificado, você receberá um arquivo chamado .ca-bundle.
Renomeie-o para .txt para facilitar o uso no Apache:
meudominio.ca-bundle → meudominio.txt
Configurando o Apache para HTTPS
Redirecionando HTTP para HTTPS
<VirtualHost *:80>
ServerAdmin contato@meudominio.com.br
ServerName www.meudominio.com.br
ServerAlias meudominio.com.br
DocumentRoot /var/www/html/meudominio/
ErrorLog /var/www/html/errors/meudominio.log
CustomLog /var/www/html/errors/meudominio-requests.log combined
Redirect permanent / https://meudominio.com.br
UseCanonicalName Off
</VirtualHost>
VirtualHost HTTPS com SSL
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/httpd/ssl/meudominio/meudominio.crt
SSLCertificateKeyFile /etc/httpd/ssl/meudominio/meudominio.key
SSLCACertificateFile /etc/httpd/ssl/meudominio/meudominio.txt
ServerAdmin contato@meudominio.com.br
ServerName www.meudominio.com.br
ServerAlias meudominio.com.br
DocumentRoot /var/www/html/meudominio/
ErrorLog /var/www/html/errors/meudominio.log
CustomLog /var/www/html/errors/meudominio-requests.log combined
</VirtualHost>
Verificando a Configuração do Apache
Antes de reiniciar o serviço, valide se não há erros de sintaxe:
apachectl configtest
# ou
httpd -t
Habilitando o Site no Apache
Crie o link simbólico para ativar o VirtualHost:
sudo ln -s /etc/httpd/sites-available/meudominio.conf \
/etc/httpd/sites-enabled/meudominio.conf
Exemplo de VirtualHost com Proxy Reverso
<VirtualHost *:80>
ServerName app.meudominio.com.br
ProxyPreserveHost On
ProxyPass "/" "http://IP_DO_SERVIDOR:PORTA/"
ProxyPassReverse "/" "http://IP_DO_SERVIDOR:PORTA/"
</VirtualHost>