Pular para o conteúdo principal

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_ssl habilitado
  • 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:

CampoDescrição
Host / IPEndereço do servidor Apache
SSH PortPorta SSH (padrão: 22)
SSH UserUsuário com permissão de escrita nos caminhos configurados
SSH PasswordSenha do usuário (opcional se usar chave SSH)

Caminhos dos arquivos de certificado:

CampoExemploDescrição
Certificate file path/etc/apache2/ssl/meu-site.crtCaminho completo do certificado leaf
Private key file path/etc/apache2/ssl/meu-site.keyCaminho completo da chave privada
CA Chain file path/etc/apache2/ssl/meu-site-chain.crtCadeia de intermediários (opcional)
Onde encontrar os caminhos
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çãoReload command
Ubuntu / Debiansystemctl reload apache2
CentOS / RHELsystemctl 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:

  1. Conecta ao servidor via SSH usando o agente configurado
  2. Grava os arquivos nos caminhos configurados (certificado, chave, cadeia)
  3. 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