Ir para o conteúdo principal

Gerador de hash APR1-MD5

Proteja um diretório ou um ficheiro Apache em 3 cliques

Precisa de acrescentar uma conta a um ficheiro .htpasswd mas não tem o comando htpasswd à mão? Introduza um utilizador e a sua própria palavra-passe: a linha no formato $apr1$ fica pronta a colar. Ainda não tem palavra-passe? Um botão ao lado do campo pode gerar uma, mas é opcional.

Introduza o nome da conta a criar no ficheiro .htpasswd.

Principais funcionalidades da ferramenta

Formato $apr1$ nativo

O MD5 com sal do Apache, com as suas 1.000 iterações e a sua codificação base64 própria. Compatível com Apache, nginx e Traefik.

Sal aleatório seguro

Um sal de 8 caracteres sorteado por gerador criptográfico em cada chamada. Duas contas com a mesma palavra-passe obtêm hashes diferentes.

Linha pronta a colar

O resultado é apresentado como uma linha user:hash completa, copiável diretamente para o seu ficheiro .htpasswd.

Sal personalizável

Indique o seu próprio sal para reproduzir um hash existente e comparar duas entradas do mesmo ficheiro.

Nada é conservado

A palavra-passe serve para o cálculo e depois desaparece. Sem rasto na base de dados, sem palavra-passe em claro nos registos.

Porquê gerar um hash APR1-MD5 em linha?

A autenticação HTTP Basic continua a ser a forma mais rápida de fechar uma área de administração, uma pré-produção ou um painel interno. Assenta num ficheiro .htpasswd em que cada linha associa um nome de utilizador a uma palavra-passe com hash, nunca em claro.

O senão: produzir esse hash exige normalmente o comando htpasswd, ou seja o pacote apache2-utils em Debian ou httpd-tools em RHEL. Num posto Windows, num alojamento partilhado ou a partir de uma interface web, esse comando falta muitas vezes.

Três situações em que este gerador resolve o problema:

  • Proteger uma pré-produção → Fechar o acesso a um ambiente de testes antes de o Google o indexar
  • Acrescentar uma conta sem acesso SSH → Criar a linha no navegador e colá-la através do gestor de ficheiros do alojamento
  • Migrar uma configuração → Reconstruir um ficheiro .htpasswd perdido a partir das credenciais conhecidas

Como usar o gerador em 3 passos

Passo 1: introduzir o utilizador e a palavra-passe

Escreva o nome da conta e a respetiva palavra-passe. O campo está oculto por omissão; carregue no ícone do olho para reler o que escreveu antes de validar.

Passo 2: deixar o sal ser gerado

Na quase totalidade dos casos, deixe o campo do sal vazio: será sorteado do lado do servidor um sal aleatório de 8 caracteres. Preencha-o apenas para reproduzir um hash existente de forma idêntica.

Passo 3: copiar a linha

São apresentados dois resultados: o hash isolado e a linha .htpasswd completa. Copie esta última, cole-a no seu ficheiro e recarregue a configuração do servidor.


Anatomia de uma linha .htpasswd

Uma linha divide-se em dois campos separados por dois pontos:

admin:$apr1$Xq7nD2mR$5CqLZ.k1qLkOvVQ0uZ9Yl.

O segundo campo decompõe-se, por sua vez, em três partes delimitadas por $:

ParteExemploFunção
Identificador do algoritmoapr1Indica ao servidor que se trata do MD5 com sal do Apache
SalXq7nD2mR8 caracteres aleatórios, guardados em claro no ficheiro
Resumo5CqLZ.k1qLkOvVQ0uZ9Yl.22 caracteres, resultado das 1.000 iterações

O sal não é um segredo: está legível no ficheiro. A sua função é impedir que uma tabela pré-calculada (rainbow table) sirva para recuperar a palavra-passe e garantir que duas contas com a mesma palavra-passe não tenham o mesmo resumo.


O que faz realmente o algoritmo $apr1$

O APR1-MD5 não é um simples md5(palavra-passe + sal). Encadeia:

  1. Dois resumos iniciais - um sobre palavra-passe + $apr1$ + sal, outro sobre palavra-passe + sal + palavra-passe
  2. Uma mistura dependente do comprimento - fragmentos do segundo resumo são reinjetados no primeiro, byte a byte
  3. 1.000 iterações - em cada volta, palavra-passe, sal e resumo anterior são recombinados segundo um padrão que depende do número da volta
  4. Uma codificação base64 «crypt» - os 16 bytes finais são relidos numa ordem entrelaçada e codificados no alfabeto ./0-9A-Za-z

São estas 1.000 iterações que fazem a diferença face a um MD5 simples: multiplicam por mil o custo de cada tentativa, travando na mesma medida um ataque por dicionário.


Proteger um diretório com o Apache

1. Criar o ficheiro

Coloque o seu ficheiro .htpasswd fora da raiz web, para que nunca seja servido por HTTP:

/var/www/secrets/.htpasswd

2. Declarar a proteção

No .htaccess do diretório a proteger, ou no bloco <Directory> do seu VirtualHost:

AuthType Basic
AuthName "Area reservada"
AuthUserFile /var/www/secrets/.htpasswd
Require valid-user

3. Recarregar a configuração

sudo apachectl configtest && sudo systemctl reload apache2

No nginx, o mesmo par de ficheiros declara-se assim:

location /admin/ {
    auth_basic           "Area reservada";
    auth_basic_user_file /var/www/secrets/.htpasswd;
}

APR1-MD5 face aos outros formatos .htpasswd

FormatoPrefixoCusto de cálculoVeredicto
bcrypt$2y$Ajustável (fator de custo)Recomendado para qualquer projeto novo
APR1-MD5$apr1$1.000 iterações de MD5Aceitável, compatibilidade máxima
SHA-1{SHA}1 iteração, sem salA evitar: sem sal, quebrável por tabela
crypt() DESnenhum25 iterações, truncado aos 8 caracteresObsoleto, não usar

Em resumo: se o seu servidor aceitar bcrypt (htpasswd -B), use-o. O APR1-MD5 é a melhor opção restante quando o bcrypt não está disponível - e vale infinitamente mais do que um {SHA} sem sal.


Verificar o hash na linha de comandos

Com o mesmo sal, o resultado desta ferramenta é idêntico ao dos utilitários do sistema:

# Com htpasswd (pacote apache2-utils / httpd-tools)
htpasswd -nbm admin minhaPalavraPasse

# Com OpenSSL, impondo o sal
openssl passwd -apr1 -salt Xq7nD2mR minhaPalavraPasse

O segundo exemplo serve também para controlar esta ferramenta: introduza o mesmo sal no formulário e deve obter exatamente a mesma cadeia.

Para verificar se uma palavra-passe corresponde a uma linha existente, releia o sal contido no hash guardado e repita o cálculo com esse sal.


FAQ - Perguntas frequentes

P: O que é o formato $apr1$?

R: É o formato de hash histórico do Apache, também chamado APR1-MD5. Aplica 1.000 iterações de MD5 sobre a palavra-passe e um sal de 8 caracteres, e codifica o resultado no alfabeto base64 do crypt. O prefixo $apr1$ funciona como identificador do algoritmo.


P: O APR1-MD5 ainda é seguro?

R: É bastante mais sólido do que um MD5 simples, mas continua rápido de calcular para um atacante com GPU. Para um projeto novo, prefira bcrypt através de htpasswd -B. O APR1-MD5 mantém o seu interesse quando a compatibilidade prevalece: versões antigas do Apache, nginx sem suporte de bcrypt, equipamentos de rede.


P: Este hash funciona com o nginx?

R: Sim. O módulo ngx_http_auth_basic_module do nginx lê o formato Apache, $apr1$ incluído. A linha gerada usa-se tal como está com auth_basic_user_file.


P: Porque obtenho um hash diferente de cada vez?

R: Em cada geração é sorteado um novo sal aleatório. Os dois hashes são válidos para a mesma palavra-passe: na verificação, o servidor relê o sal guardado no hash e refaz o cálculo. Preencha o campo do sal se quiser um resultado reproduzível.


P: A palavra-passe fica guardada em algum lado?

R: Não. Circula em HTTPS até à API CaptainDNS durante o cálculo e depois é descartada. Nem base de dados, nem registo com a palavra-passe em claro.


P: Posso usar acentos ou símbolos?

R: Sim, o cálculo incide sobre os bytes UTF-8 da palavra-passe. Uma ressalva: um cliente HTTP antigo pode codificar os caracteres não ASCII de outra forma, o que faria falhar a autenticação. Na dúvida, fique-se pelo ASCII.


P: Onde colocar o ficheiro .htpasswd?

R: Fora da raiz web, por exemplo em /var/www/secrets/. Se estiver num diretório servido por HTTP, um visitante poderia descarregá-lo e atacar os hashes offline.


Ferramentas complementares

FerramentaUtilidade
Gerador de palavras-passeSortear uma palavra-passe sólida antes de lhe aplicar o hash
Gerador de hashCalcular MD5, SHA-1, SHA-256 e SHA-512 de um texto
Codificador Base64Codificar o cabeçalho Authorization de um pedido Basic
Analisador de cabeçalhos HTTPVerificar os cabeçalhos devolvidos por uma área protegida
Teste HSTSGarantir que o acesso protegido passa mesmo por HTTPS

Recursos úteis


Compromisso de confidencialidade

A sua palavra-passe é transmitida à API CaptainDNS unicamente para calcular o hash, numa ligação cifrada. Não é guardada nem registada. Só ficam métricas técnicas anónimas (duração do processamento, código de resposta).