Instruções
Como o Verifica funciona e como certificar o seu site, do registro ao deploy automático. Vai usar uma IA para integrar? Entregue a ela o llms.txt, que traz a mesma especificação em texto puro.
1. O que é
O cadeado do HTTPS garante que você está falando com o servidor do domínio. Ele não garante que o conteúdo desse servidor é o que o dono publicou: se o servidor for invadido, o site adulterado continua com cadeado.
O Verifica certifica o conteúdo. É a mesma ideia do DKIM no e-mail, aplicada a sites: o dono publica uma chave no DNS, assina cada versão do site fora do servidor, a assinatura fica registrada na blockchain VERA, e um monitor confere o site no ar a cada 10 minutos.
2. Como funciona
- Chave no DNS. Um registro TXT em
_vsp.seudominiotraz a chave pública do dono. Só quem controla o DNS do domínio consegue publicar. - Manifesto assinado. A versão do site vira uma lista com a impressão digital (SHA-256) de cada arquivo e, nas páginas dinâmicas, o código que roda nelas. O dono assina essa lista com a chave privada, no navegador ou no deploy. A chave privada nunca vai para o servidor do site.
- Registro na blockchain. O hash de cada versão e de cada troca de chave é gravado na VERA, encadeado com a versão anterior. Ninguém publica uma versão nem troca a chave em silêncio, nem o próprio Verifica.
- Monitor. A cada 10 minutos o Verifica baixa o site e compara arquivo por arquivo com a última versão assinada. Qualquer diferença deixa o status vermelho.
- vsp.json. O site publica a versão assinada em
/.well-known/vsp.json, para que qualquer verificador confira a assinatura direto no site.
3. Passo a passo
- Entre no painel com o seu e-mail (você recebe um código de 6 dígitos).
- Adicione o domínio e escolha Gerar chave nova. Defina uma frase-senha de pelo menos 12 caracteres: ela cifra a chave no seu navegador antes de guardar no cofre.
- Publique o TXT que o painel mostrar, no painel de DNS do domínio:
- Tipo
TXT- Nome
_vsp(ou_vsp.seudominio.com.br)- Valor
v=VSP1; k=ed25519; p=<chave pública>
- Clique em “Conferir DNS e registrar esta chave”. O Verifica consulta o TXT em dois resolvedores (Cloudflare e Google) e registra a chave na blockchain.
- Assine a primeira versão: no painel, Assinar versão. Escolha a pasta com os arquivos exatamente como estão no ar e/ou informe as páginas dinâmicas.
- Publique o vsp.json baixado no fim da assinatura em
https://seudominio/.well-known/vsp.json. - Confira em
/verifica/s/seudominioe clique em Verificar agora. O status deve ficar verde. - A cada deploy, assine a versão nova. Mudou um arquivo, o selo fica vermelho até a assinatura nova. O ideal é automatizar (seção 5).
4. Arquivos estáticos e páginas dinâmicas
Cada caminho do site entra num de dois modos:
- Modo exato
- Para arquivos que são iguais para todo mundo: HTML pré-gerado, JavaScript, CSS, imagens, fontes. Compara o arquivo inteiro: muda uma vírgula, fica vermelho.
- Modo código
- Para páginas geradas a cada acesso (área do cliente, login, notícias). O texto pode mudar à vontade; o Verifica certifica o que executa: scripts (externos pelo endereço, embutidos pelo hash), eventos como
onclick, linksjavascript:, iframes, destino dos formulários,<base>, redirecionamentos e a política de segurança (CSP). Dados em JSON e o pacote de dados do Next.js são ignorados. Os scripts e estilos do próprio domínio que a página carrega entram também pelo conteúdo, no modo exato.
Exemplo: num site em Next.js, use o modo exato para a pasta do build estático e o modo código para as páginas renderizadas no servidor. Página em modo código também não fica vermelha só porque o build gerou um identificador novo.
5. Deploy automático
No painel, Copiar chave entrega a chave no formato vsp1_…. Guarde como segredo do deploy (variável VSP_KEY), nunca no código. O comando vsp-publish.py assina e registra a versão; ele só precisa de Python 3.8+, sem instalar nada.
Site estático (rodar antes de enviar os arquivos)
VSP_KEY=vsp1_... python3 vsp-publish.py --domain seudominio.com.br --dir ./dist
# grava ./dist/.well-known/vsp.json — envie a pasta dist em seguida
Páginas dinâmicas (rodar depois do deploy)
VSP_KEY=vsp1_... python3 vsp-publish.py --domain seudominio.com.br \
--page /login --page /conta --out /var/www/site/.well-known/vsp.json
GitHub Actions
- name: Certificar versão no Verifica
env:
VSP_KEY: ${{ secrets.VSP_KEY }}
run: |
curl -fsSLo vsp-publish.py https://johnnydevit.cloud/verifica/static/vsp-publish.py
python3 vsp-publish.py --domain seudominio.com.br --dir ./dist
Opções: --base /pasta/ quando os arquivos ficam numa subpasta do site; --key-file arquivo.json em vez de VSP_KEY. Prefere não baixar o script a cada deploy? Copie-o para o seu repositório.
6. O que cada status significa
- verificado
- Tudo no ar confere com a última versão assinada, o vsp.json está atualizado e a chave do DNS é a registrada.
- alterado
- Algum arquivo mudou, sumiu, ou entrou código novo numa página dinâmica, sem assinatura. Se foi um deploy seu, assine a versão nova; se não foi, o site pode ter sido invadido.
- chave DNS
- O TXT agora traz outra chave, ou sumiu. Se foi você, registre a chave nova no painel.
- incompleto
- Os arquivos conferem, mas falta publicar (ou atualizar) o
/.well-known/vsp.json. - fora do ar
- O monitor não conseguiu acessar o site.
7. Cofre e troca de chave
- O cofre guarda a chave cifrada com a sua frase-senha (PBKDF2-SHA256 com 600 mil iterações + AES-GCM), no seu navegador. O servidor só recebe o cofre fechado: nem o Verifica consegue abrir.
- Esqueceu a frase-senha ou suspeita de vazamento? No painel, Gerar nova chave. Não pede a frase antiga: cria a chave nova, mostra o TXT novo e, depois que você trocar no DNS, registra a troca. A chave antiga deixa de assinar.
- Toda troca fica na blockchain e a página pública mostra um aviso por 72 horas. Se a troca não foi sua, alguém pode ter tomado o DNS do domínio.
8. Selo no site
Na página do seu site no Verifica há um código pronto para colar. O selo mostra o domínio verificado e leva à página de verificação.
O selo é um atalho, não a prova: a prova é a verificação feita no Verifica, fora do seu site. Como ele mostra o nome do domínio, um site falso que copie o selo exibe o domínio verdadeiro, diferente do que está na barra de endereço.
9. Limites e o que fica de fora
- Até 500 arquivos e páginas por versão; até 25 MB por arquivo.
- Conteúdo de terceiros (fontes do Google, widgets, analytics de outro domínio) entra só pelo endereço, não pelo conteúdo: se o terceiro mudar o arquivo dele, o Verifica não percebe.
- O monitor não entra em áreas com login. O código dessas áreas costuma ser o mesmo das páginas públicas e é conferido por elas.
- O Verifica certifica que o conteúdo é o publicado pelo dono do domínio. Ele não avalia se o dono é confiável.
- MVP em rede de testes (VERA SmartChain testnet).
10. Perguntas frequentes
- Preciso trocar o certificado HTTPS?
- Não. O Verifica funciona junto com o HTTPS e não mexe nele.
- O Verifica guarda os arquivos do meu site?
- Não. Ele guarda só as impressões digitais (hashes) e a lista do código das páginas dinâmicas.
- Refiz o build sem mudar nada e ficou vermelho. Por quê?
- Alguns frameworks (como o Next.js) colocam no HTML um identificador novo a cada build. Para o modo exato, é outra versão: assine de novo, ou use o modo código nessas páginas.
- E se o servidor do Verifica for invadido?
- O invasor não consegue assinar versões em nome de ninguém: as chaves ficam com os donos, e o cofre só abre com a frase-senha. O pior caso é o monitor ficar fora do ar ou dar alarme falso, nunca um verde falso.