--- name: cwp-ssl description: Gestão de certificados SSL no CWP com acme.sh nativo — emissão, renovação e troubleshooting baseado na documentação oficial. disable-model-invocation: true --- # /cwp-ssl - Gestão SSL CWP (Documentação Oficial) Gestão de certificados SSL no CWP usando acme.sh nativo. **Zero assumptions, zero hallucinations** - apenas comandos documentados oficialmente. **REGRA #38 - ZERO INVENCAO:** NUNCA improvisar comandos. Verificar estado actual ANTES de alterar. Pesquisar wiki CWP se necessario. Usar APENAS scripts oficiais. --- ## Servidor Alvo | Servidor | IP | MCP | User | |----------|-----|-----|------| | **CWP Principal** | 176.9.3.158 | ssh-unified | root | --- ## Documentação Base - [AutoSSL CWP Wiki](https://docs.control-webpanel.com/docs/admin-guide/ssl/autossl) - [acme.sh Documentation](https://wiki.centos-webpanel.com/) ### Documentação Hub (Consultar SEMPRE) **Manuais locais** (`Hub/06-Operacoes/Documentacao/Manuais/CWP/`): - `CWP-Manual-Completo.md` - Admin Guide + Wiki (seccoes SSL & Security, WebServers) - **503KB** - `CWP-Guia-do-Utilizador.md` - Painel utilizador (seccao AutoSSL) - **72KB** - `CWP-Ferramentas-Desenvolvimento.md` - API AutoSSL (add/del/list/renew) - **82KB** **Quick Reference:** `Hub/06-Operacoes/Documentacao/Quick-Reference/QR-CWP.md` **NotebookLM (pesquisa AI sobre toda a documentacao CWP):** ``` mcp__notebooklm__notebook_query notebook_id:"0ded7bd6-69b3-4c76-b327-452396bf7ea7" query:"ssl certificado autossl renovacao" ``` --- ## Paths Oficiais (Documentados) | Path | Descrição | |------|-----------| | `/root/.acme.sh/` | Instalação acme.sh | | `/root/.acme.sh/cwp_certs/` | Certificados CWP | | `/root/.acme.sh/acme.sh.log` | Log acme.sh | | `/var/log/cwp/autossl.log` | Log AutoSSL CWP | | `/usr/local/apache/autossl_tmp/` | **Webroot para validação SSL** | | `/etc/pki/tls/certs/` | Certificados Nginx | | `/etc/pki/tls/private/` | Chaves privadas Nginx | --- ## Scripts Oficiais | Script | Descrição | |--------|-----------| | `/scripts/install_acme` | Instala/reinstala acme.sh | | `/scripts/autossl_reload` | Reload AutoSSL | | `/scripts/generate_hostname_ssl` | Gera SSL para hostname | | `/scripts/hostname_ssl_restart_services` | Restart serviços após SSL hostname | --- ## Comandos Documentados ### Verificar Certificados Instalados ```bash # Listar todos os certificados CWP ls /root/.acme.sh/cwp_certs/ ``` ### Verificar Próxima Renovação ```bash # Ver data de próxima renovação para um domínio grep "Le_NextRenewTimeStr" /root/.acme.sh/cwp_certs/www.DOMINIO_ecc/www.DOMINIO.conf ``` ### Forçar Renovação Manual ```bash # COMANDO OFICIAL para forçar renovação /root/.acme.sh/acme.sh --renew -d DOMINIO --force --home /root/.acme.sh/cwp_certs ``` ### Verificar Certificado Activo ```bash # Verificar validade de certificado em produção echo | openssl s_client -connect DOMINIO:443 2>/dev/null | openssl x509 -noout -dates ``` ### Ver Logs de Renovação ```bash # Log acme.sh tail -100 /root/.acme.sh/acme.sh.log | grep DOMINIO # Log AutoSSL CWP tail -100 /var/log/cwp/autossl.log ``` --- ## Cron de Renovação Automática **Cron CWP (documentado):** `23 2 * * *` - Renovação diária às 02:23 ```bash # Verificar cron de renovação crontab -l | grep -i acme ``` --- ## Workflows ### 1. Listar Todos os Certificados ```bash for d in $(ls /root/.acme.sh/cwp_certs/); do echo "=== $d ===" grep -E 'Le_NextRenewTimeStr|Le_Alt' /root/.acme.sh/cwp_certs/$d/*.conf 2>/dev/null | head -3 done ``` ### 2. Verificar Certificados Expirando (<30 dias) ```bash for d in $(ls /root/.acme.sh/cwp_certs/); do domain=$(echo $d | sed 's/_ecc$//') echo "=== $domain ===" echo | openssl s_client -connect $domain:443 2>/dev/null | openssl x509 -noout -dates done 2>&1 | grep -A1 "notAfter" ``` ### 3. Forçar Renovação de Domínio Específico ```bash # Substituir DOMINIO pelo domínio real /root/.acme.sh/acme.sh --renew -d DOMINIO --force --home /root/.acme.sh/cwp_certs ``` ### 4. Reinstalar acme.sh (se corrompido) ```bash # COMANDO OFICIAL sh /scripts/install_acme ``` ### 5. Gerar SSL para Hostname ```bash # COMANDO OFICIAL sh /scripts/generate_hostname_ssl sh /scripts/hostname_ssl_restart_services ``` --- ## Troubleshooting Documentado ### Renovação Falha - Muitos Subdomínios **Problema:** `Le_Alt` contém muitos subdomínios (mail, ftp, cpanel) - qualquer falha bloqueia tudo. **Solução documentada:** ```bash # Editar .conf para ter apenas domínio principal vi /root/.acme.sh/cwp_certs/www.DOMINIO_ecc/www.DOMINIO.conf # Reduzir Le_Alt para apenas 'DOMINIO' ``` ### Webroot Incorrecto **Problema:** Validação falha porque ficheiro `.well-known/acme-challenge/` não é encontrado. **Solução documentada:** ```bash # O Nginx CWP serve validação de pasta GLOBAL, não do site # Pasta correcta: /usr/local/apache/autossl_tmp/ # NUNCA usar (não funciona): /home/user/domain.pt/.well-known/ ``` ### Ver Erro Específico ```bash tail -100 /root/.acme.sh/acme.sh.log | grep -E 'error|Error|ERRO' ``` --- ## Anti-Patterns (NUNCA FAZER) | Anti-Pattern | Risco | Alternativa | |--------------|-------|-------------| | **Usar certbot** | Conflito com acme.sh nativo | Usar acme.sh CWP | | Incluir mail/ftp/cpanel em Le_Alt | Falha em cascata | Apenas domínio principal | | Criar hooks manuais | Sobrescrito em update | Usar scripts oficiais | | Editar certificados em /etc/pki/ | Sobrescrito | Editar em cwp_certs | --- ## Validação Pós-Operação Após qualquer operação SSL, validar: ```bash # 1. Certificado instalado correctamente echo | openssl s_client -connect DOMINIO:443 2>/dev/null | openssl x509 -noout -subject -dates # 2. Sem erros no log tail -20 /root/.acme.sh/acme.sh.log | grep -i error # 3. Site acessível via HTTPS curl -sI https://DOMINIO | head -5 ``` --- ## Thresholds de Alerta | Condição | Status | Acção | |----------|--------|-------| | Expira >30 dias | OK | Nenhuma | | Expira 15-30 dias | Warning | Monitorizar | | Expira <15 dias | **Crítico** | Renovar imediatamente | | Expirado | **Urgente** | Forçar renovação | --- ## Checklist de Execução - [ ] Verificar domínio existe em cwp_certs - [ ] Verificar webroot está acessível - [ ] Executar comando de renovação se necessário - [ ] Validar certificado após operação - [ ] Verificar logs sem erros --- **Versão:** 1.0.0 | **Autor:** Descomplicar® **Fonte:** Documentação oficial CWP (docs.control-webpanel.com, wiki.centos-webpanel.com)