--- name: cwp-ssl description: CWP AutoSSL management using native acme.sh. Manages SSL certificates, renewals, and troubleshooting. Based on official CWP documentation only. Use when user mentions "ssl cwp", "autossl", "certificado ssl", "renovar ssl", "acme.sh". author: Descomplicar® Crescimento Digital version: 1.0.0 quality_score: 70 user_invocable: true desk_task: null --- # /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/) --- ## 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)