JD VerificaJohnnyDevIT · certificação de sites em blockchain InstruçõesPainel

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

  1. Chave no DNS. Um registro TXT em _vsp.seudominio traz a chave pública do dono. Só quem controla o DNS do domínio consegue publicar.
  2. 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.
  3. 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.
  4. 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.
  5. 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

  1. Entre no painel com o seu e-mail (você recebe um código de 6 dígitos).
  2. 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.
  3. 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>
    A propagação costuma levar de 1 a 30 minutos. Se o seu provedor oferecer DNSSEC, ligue: a página do site passa a mostrar “DNSSEC ativo”.
  4. 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.
  5. 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.
  6. Publique o vsp.json baixado no fim da assinatura em https://seudominio/.well-known/vsp.json.
  7. Confira em /verifica/s/seudominio e clique em Verificar agora. O status deve ficar verde.
  8. 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, links javascript:, 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

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

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.