Certificados SSL
HTTPS para cada domínio do VPS: curinga da zona da ArduMaker ou Let's Encrypt emitido ao ativar o domínio.
- Categoria: Servidores e infraestrutura
- Estado: Disponível
- Requisitos: Um domínio que já chegue ao host do VPS (verifique com
verificar_dominio_vps); Ser membro da empresa com acesso ao VPS; Para um domínio próprio: que a porta 80 do domínio chegue ao host durante a validação - Ferramentas MCP (Só leem):
verificar_dominio_vps,ver_operacion - Ferramentas MCP (Escrevem ou modificam):
activar_dominio_vps
O que permite fazer?
- Servir cada domínio publicado em HTTPS (TLS 1.2 e 1.3, HTTP/2), com redirecionamento automático de HTTP para HTTPS.
- Usar sem trâmites o certificado curinga da zona da ArduMaker para subdomínios de um só nível.
- Emitir um certificado Let's Encrypt para um domínio próprio, ou para um subdomínio de dois níveis da zona, ao ativar o domínio.
- Publicar um domínio só em HTTP quando não se quer TLS (
use_ssl=false).
Quando convém usar?
- Ao publicar qualquer domínio em um VPS: o certificado é resolvido no mesmo passo de ativação.
- Quando se liga um domínio próprio da empresa a uma app do VPS.
- Quando um domínio mostra um erro de certificado e é preciso pedi-lo de novo.
Como funciona na ArduMaker?
O TLS termina no host compartilhado, nunca dentro do VPS. Que certificado um domínio usa depende do nome:
| Domínio | Certificado | O que a ativação faz |
|---|---|---|
Subdomínio de um nível da zona da ArduMaker (app.<zona>) | Curinga da zona, emitido e renovado pela plataforma | Não emite nada: certificate.skipped: true |
Subdomínio de dois níveis da zona (api.app.<zona>) | Let's Encrypt, próprio desse nome | Verifica o DNS e emite com create_cert=true |
| Domínio próprio | Let's Encrypt, próprio desse nome | Verifica o DNS e emite com create_cert=true |
Emissão com Let's Encrypt
activar_dominio_vpsvalida o nome e verifica que o DNS chega ao host (registro A para o host, CNAME para odnsipdo VPS, ou um proxy à frente, que é aceito).- Com
create_cert=true(padrão), o host pede o certificado à Let's Encrypt comcertbotem modo standalone (validação por HTTP na porta 80). Comemailregistra-se esse correio; sem ele, registra-se sem correio. - Só com o certificado emitido se escreve o server block HTTPS do host que o usa.
- Se a validação falhar, nada é publicado e a resposta traz apenas as linhas da autoridade sobre ESSE domínio (
Domain:,Type:,Detail:).
Voltar a ativar um domínio com create_cert=true é seguro: se o certificado continua válido, a Let's Encrypt não emite outro; se expirou, é renovado. Não há uma ferramenta à parte para renovar à mão.
O que muda realmente?
- No host: o certificado e a chave do domínio, e um server block com
listen 443 ssl http2que os usa, mais um bloco na 80 que responde 301 para HTTPS. - No VPS: nada relacionado com TLS.
- Na Let's Encrypt: uma emissão por domínio próprio (conta para os seus limites de emissão).
Cópias e bases de dados
As cópias de segurança semanais do VPS incluem os certificados dos domínios próprios (pastas live/, archive/ e renewal/), para os poder restaurar. Os certificados da plataforma não viajam na cópia: o manifesto lista-os em ssl_domains_excluidos para distinguir “nunca teve certificado” de “tinha e não viaja”. Ver Cópias de segurança.
TLS das bases de dados com acesso externo
Quando uma base (PostgreSQL, MySQL ou Redis) instalada com Apps é aberta ao exterior, o motor recebe um certificado próprio para o seu hostname, emitido por validação DNS. É renovado automaticamente quando faltam menos de 30 dias para o vencimento; se uma renovação falhar, o certificado anterior continua carregado.
Esquema
- Navegador: HTTPS
- Cloudflare: só zona da ArduMaker: certificado da borda
- nginx do host :443: termina TLS com o curinga ou com Let's Encrypt
- Redirecionamento de porta: tráfego interno, sem TLS
- nginx do VPS :443: HTTP simples
Resultado esperado
certificatena resposta deactivar_dominio_vps:{success, domain, exit_code}se foi emitido, ou{success, skipped, reason, domain}se foi usado o curinga.- Com
use_ssl=trueo domínio responde por HTTPS e a porta 80 redireciona com um 301. - Verifica-se com
curl -sI https://<dominio>/ou olhando o certificado no navegador.
Erros e resolução
| Erro | Causa | O que fazer |
|---|---|---|
desafio_fallido | A Let's Encrypt não conseguiu validar o domínio por HTTP (DNS que não chega ao host, porta 80 bloqueada por um proxy ou firewall externo) | Ler problems, corrigir o DNS e voltar a ativar |
limite_emision | Foi atingido um limite de emissão da Let's Encrypt para esse domínio | Esperar antes de tentar de novo; repetir logo não ajuda |
certificado_del_host_ausente | Pediu-se HTTPS sem certificado emitido para esse nome | Ativar com create_cert=true, ou com use_ssl=false |
Domain could not be resolved | O domínio ainda não resolve | Rever o DNS e esperar a propagação |
A saída completa do certbot não é devolvida (o host é compartilhado): fica no log do servidor. Ativar de novo um domínio é seguro; cuidado ao repetir muitas vezes uma emissão que falha, porque a Let's Encrypt limita as tentativas.
Relação com MCP
O certificado é pedido com activar_dominio_vps (parâmetros use_ssl, create_cert e email). Com um domínio próprio pode demorar, porque a validação é real; a ferramenta devolve um operacion_id que se acompanha com ver_operacion. Antes convém chamar verificar_dominio_vps, que é só de leitura.
É uma operação de escrita: um agente autorizado como só leitura não a pode executar. Não há ferramentas para ler nem exportar certificados ou chaves. Referência em /mcp/docs e exemplos em /mcp/dominios.