Plugins: automacao, crm-ops, design-media, dev-tools, gestao, infraestrutura, marketing, negocio, perfex-dev, project-manager, wordpress + hello-plugin (existente). Totais: 83 skills, 44 agents, 12 datasets.json Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
243 lines
6.0 KiB
Markdown
243 lines
6.0 KiB
Markdown
---
|
|
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)
|