Pular para o conteúdo principal

Nginx

Realiza deploy de certificados em servidores Nginx 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
  • Nginx instalado e configurado com suporte a SSL/TLS
  • Diretório de destino dos certificados criado no servidor (ex: /etc/nginx/ssl/)

Preparar o servidor

Criar o diretório de certificados

Caso o diretório ainda não exista, crie-o antes de configurar o store:

mkdir -p /etc/nginx/ssl
chmod 755 /etc/nginx/ssl

Identificar os caminhos dos certificados

Para descobrir onde o Nginx está lendo os certificados, rode no servidor:

grep -r "ssl_certificate" /etc/nginx/

O resultado mostra os caminhos configurados no virtual host, por exemplo:

/etc/nginx/sites-available/meu-site:    ssl_certificate /etc/nginx/ssl/meu-site.crt;
/etc/nginx/sites-available/meu-site: ssl_certificate_key /etc/nginx/ssl/meu-site.key;

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/nginx/ssl/
chmod 770 /etc/nginx/ssl/

# Libera o reload do Nginx via sudo sem senha
echo "<usuario> ALL=(ALL) NOPASSWD: /bin/systemctl reload nginx" >> /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 Nginx
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/nginx/ssl/meu-site.crtCaminho completo do certificado leaf
Private key file path/etc/nginx/ssl/meu-site.keyCaminho completo da chave privada
CA Chain file path/etc/nginx/ssl/meu-site-chain.crtCadeia de intermediários (opcional)
Onde encontrar os caminhos
Os caminhos corretos são os definidos nas diretivas `ssl_certificate` e `ssl_certificate_key` do seu virtual host Nginx. Use o comando `grep -r "ssl_certificate" /etc/nginx/` para localizá-los.

Configuração de serviço:

CampoValorDescrição
Reload commandsystemctl reload nginxRecarrega o Nginx após o deploy. Use sudo systemctl reload nginx se o usuário SSH não for root.

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 Nginx sem interromper o serviço
O comando `systemctl reload nginx` recarrega a configuração e os certificados sem derrubar conexões ativas. Use `systemctl restart nginx` apenas se o reload não for suficiente para aplicar a mudança.

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/nginx/ssl/

# Testa escrita com o usuário SSH configurado
su - <usuario> -c "touch /etc/nginx/ssl/teste && echo OK && rm /etc/nginx/ssl/teste"

Se retornar Permission denied, ajuste as permissões conforme descrito em Permissões do usuário SSH.

Reload command falha

Verifique se o usuário SSH tem permissão para executar o reload:

# Testa o reload com o usuário SSH
su - <usuario> -c "sudo systemctl reload nginx"

Se retornar erro de permissão, adicione a regra no sudoers conforme descrito em Permissões do usuário SSH.

Nginx não aplica o novo certificado após o deploy

Confirme que o virtual host aponta para os mesmos caminhos configurados no store:

nginx -t && systemctl reload nginx

Verifique também se o Nginx está ativo:

systemctl status nginx