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:
| Campo | Descrição |
|---|---|
| Host / IP | Endereço do servidor Nginx |
| 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/nginx/ssl/meu-site.crt | Caminho completo do certificado leaf |
| Private key file path | /etc/nginx/ssl/meu-site.key | Caminho completo da chave privada |
| CA Chain file path | /etc/nginx/ssl/meu-site-chain.crt | Cadeia de intermediários (opcional) |
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:
| Campo | Valor | Descrição |
|---|---|---|
| Reload command | systemctl reload nginx | Recarrega 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:
- 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 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