- All SKILL.md files now <500 lines (avg reduction 69%) - Detailed content extracted to references/ subdirectories - Frontmatter standardised: only name + description (Anthropic standard) - New skills: brand-guidelines, spec-coauthor, report-templates, skill-creator - Design skills: anti-slop guidelines, premium-proposals reference - Removed non-standard frontmatter fields (triggers, version, author, category) Plugins affected: infraestrutura, marketing, dev-tools, crm-ops, gestao, core-tools, negocio, perfex-dev, wordpress, design-media Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
253 lines
6.4 KiB
Markdown
253 lines
6.4 KiB
Markdown
---
|
|
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)
|