Apache HTTP Server
Realiza deploy de certificados em servidores Apache via SSH, usando um agente CLM como intermediário.
Pré-requisitos
- Agente CLM Linux instalado e online com acesso SSH ao servidor de destino
- Usuário SSH com permissão de escrita nos caminhos de destino dos arquivos
- Apache instalado com o módulo
mod_sslhabilitado - Diretório de destino dos certificados criado no servidor
Preparar o servidor
Habilitar o módulo SSL
Verifique se o mod_ssl está habilitado:
# Ubuntu/Debian
a2enmod ssl
systemctl reload apache2
# CentOS/RHEL
httpd -M | grep ssl
Criar o diretório de certificados
Caso o diretório ainda não exista:
mkdir -p /etc/apache2/ssl
chmod 755 /etc/apache2/ssl
Identificar os caminhos dos certificados
Para descobrir onde o Apache está lendo os certificados, rode no servidor:
grep -r "SSLCertificateFile" /etc/apache2/
# ou no CentOS/RHEL
grep -r "SSLCertificateFile" /etc/httpd/
O resultado mostra os caminhos configurados no virtual host, por exemplo:
/etc/apache2/sites-available/meu-site.conf: SSLCertificateFile /etc/apache2/ssl/meu-site.crt
/etc/apache2/sites-available/meu-site.conf: SSLCertificateKeyFile /etc/apache2/ssl/meu-site.key
/etc/apache2/sites-available/meu-site.conf: SSLCertificateChainFile /etc/apache2/ssl/meu-site-chain.crt
Use exatamente esses caminhos ao configurar o store.
Permissões do usuário SSH
O usuário SSH configurado no store precisa ter permissão de escrita no diretório dos certificados. Se estiver usando um usuário não-root:
# Ajusta permissão do diretório para o usuário
chown root:<usuario> /etc/apache2/ssl/
chmod 770 /etc/apache2/ssl/
# Ubuntu/Debian — libera reload via sudo sem senha
echo "<usuario> ALL=(ALL) NOPASSWD: /bin/systemctl reload apache2" >> /etc/sudoers
# CentOS/RHEL — libera reload via sudo sem senha
echo "<usuario> ALL=(ALL) NOPASSWD: /bin/systemctl reload httpd" >> /etc/sudoers
Criar via tela de Stores
Etapa 1 — Provider
Selecione Provedor Unix.
Etapa 2 — Agent
Selecione o agente Linux que realizará a conexão SSH com o servidor de destino.
Etapa 3 — Configuration
Conexão SSH:
| Campo | Descrição |
|---|---|
| Host / IP | Endereço do servidor Apache |
| SSH Port | Porta SSH (padrão: 22) |
| SSH User | Usuário com permissão de escrita nos caminhos configurados |
| SSH Password | Senha do usuário (opcional se usar chave SSH) |
Caminhos dos arquivos de certificado:
| Campo | Exemplo | Descrição |
|---|---|---|
| Certificate file path | /etc/apache2/ssl/meu-site.crt | Caminho completo do certificado leaf |
| Private key file path | /etc/apache2/ssl/meu-site.key | Caminho completo da chave privada |
| CA Chain file path | /etc/apache2/ssl/meu-site-chain.crt | Cadeia de intermediários (opcional) |
Os caminhos corretos são os definidos nas diretivas `SSLCertificateFile`, `SSLCertificateKeyFile` e `SSLCertificateChainFile` do seu virtual host Apache. Use o comando `grep -r "SSLCertificateFile" /etc/apache2/` para localizá-los.
Configuração de serviço:
| Distribuição | Reload command |
|---|---|
| Ubuntu / Debian | systemctl reload apache2 |
| CentOS / RHEL | systemctl reload httpd |
Se o usuário SSH não for root, use `sudo systemctl reload apache2` e garanta que a regra no sudoers está configurada conforme descrito em [Permissões do usuário SSH](#permissões-do-usuário-ssh).
Etapa 4 — Review
Defina o Repository Name, confirme as configurações e clique em Create Repository.
Como funciona o deploy
Quando um certificado é instalado ou renovado, o CLM:
- Conecta ao servidor via SSH usando o agente configurado
- Grava os arquivos nos caminhos configurados (certificado, chave, cadeia)
- Executa o Reload command para aplicar o novo certificado no Apache sem interromper o serviço
Instalar um certificado
Na tela de detalhes do Store, clique em Instalar Certificado, selecione o certificado do inventário e confirme.
Resolução de problemas
Deploy falha no passo 1
O agente não conseguiu escrever o arquivo no destino. Verifique:
# Confirma que o diretório existe
ls -la /etc/apache2/ssl/
# Testa escrita com o usuário SSH configurado
su - <usuario> -c "touch /etc/apache2/ssl/teste && echo OK && rm /etc/apache2/ssl/teste"
Se retornar Permission denied, ajuste as permissões conforme descrito em Permissões do usuário SSH.
Apache não aplica o novo certificado após o deploy
Verifique a configuração e recarregue manualmente:
# Ubuntu/Debian
apachectl configtest && systemctl reload apache2
# CentOS/RHEL
httpd -t && systemctl reload httpd
Módulo SSL não encontrado
# Ubuntu/Debian
a2enmod ssl && systemctl reload apache2