📜 Estrutura dos Certificados
Para configurar corretamente a cadeia de certificados no Apache, precisamos identificar:
- Certificado principal (Leaf Certificate) → Assinado por uma CA intermediária.
- Certificado intermediário (Intermediate Certificate) → Assinado pela Root CA.
- Certificado raiz (Root Certificate) → Autoridade certificadora raiz.
Para identificar cada um:
openssl x509 -in certificado.crt -noout -subject -issuerExemplo de saída:
subject= /CN=*.example.com
issuer= /C=US/O=Example CA/CN=Example Intermediate CA
Isso mostra que certificado.crt foi emitido pela CA intermediária.
Agora, para o intermediário:
openssl x509 -in intermediario.crt -noout -subject -issuerSaída:
subject= /C=US/O=Example CA/CN=Example Intermediate CA
issuer= /C=US/O=Example Root CA
Isso indica que intermediario.crt foi assinado pela Root CA.
🌍 Baixando o Certificado Raiz com wget
Caso o certificado raiz não esteja disponível, é possível baixá-lo diretamente do site da DigiCert:
wget -O /etc/httpd/ssl/DigiCertGlobalRootG2.crt http://cacerts.digicert.com/DigiCertGlobalRootG2.crt🔗 Criando o fullchain.crt
O Apache requer um arquivo contendo toda a cadeia de certificados na ordem correta:
- Certificado principal (
certificado.crt) - Certificado intermediário (
intermediario.crt) - Certificado Raiz (
DigiCertGlobalRootG2.crt)
Para gerar:
cat certificado.crt intermediario.crt DigiCertGlobalRootG2.crt > /etc/httpd/ssl/fullchain.crt🛠️ Configuração no Apache
Edite o arquivo de configuração SSL (/etc/httpd/conf.d/ssl.conf ou similar):
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/fullchain.crt
SSLCertificateKeyFile /etc/httpd/ssl/private.key
SSLCACertificateFile /etc/httpd/ssl/root_ca.crt
</VirtualHost>Explicação:
SSLCertificateFile→ Contém o certificado do site + intermediário.SSLCertificateKeyFile→ Contém a chave privada.SSLCACertificateFile→ Contém o certificado raiz.
✅ Testando e Aplicando as Configurações
1️⃣ Verificar a configuração do Apache
apachectl configtestSe retornar Syntax OK, reinicie o serviço:
systemctl restart httpd2️⃣ Testar conexão local
curl -vk https://localhost3️⃣ Verificar a cadeia de certificados
openssl s_client -connect example.com:443 -showcertsSe tudo estiver correto, o Azure Application Gateway também aceitará a conexão sem erros de SSL.
🚀 Agora sua configuração SSL está pronta e documentada!