Vai al contenuto principale

Generatore di hash APR1-MD5

Proteggi una directory o un file Apache in 3 clic

Devi aggiungere un account a un file .htpasswd ma non hai a portata di mano il comando htpasswd? Inserisci nome utente e la tua password: la riga in formato $apr1$ è pronta da incollare. Non hai ancora una password? Un pulsante accanto al campo può generarne una, ma è facoltativo.

Inserisci il nome dell'account da creare nel file .htpasswd.

Punti chiave dello strumento

Formato $apr1$ nativo

L'MD5 con sale di Apache, con le sue 1.000 iterazioni e la sua codifica base64 specifica. Compatibile con Apache, nginx e Traefik.

Sale casuale sicuro

Un sale di 8 caratteri estratto da un generatore crittografico a ogni chiamata. Due account con la stessa password ottengono due hash diversi.

Riga pronta da incollare

Il risultato compare come riga user:hash completa, copiabile direttamente nel tuo file .htpasswd.

Sale personalizzabile

Indica il tuo sale per riprodurre un hash esistente e confrontare due voci dello stesso file.

Nulla viene conservato

La password serve al calcolo e poi sparisce. Nessuna traccia nel database, nessuna password in chiaro nei log.

Perché generare un hash APR1-MD5 online?

L'autenticazione HTTP Basic resta il modo più rapido per chiudere un'area di amministrazione, un ambiente di staging o una dashboard interna. Si basa su un file .htpasswd in cui ogni riga associa un nome utente a una password hashata, mai in chiaro.

Il problema: per produrre quell'hash serve di norma il comando htpasswd, quindi il pacchetto apache2-utils su Debian o httpd-tools su RHEL. Su una postazione Windows, su un hosting condiviso o da un'interfaccia web, quel comando spesso manca.

Tre situazioni in cui questo generatore toglie d'impaccio:

  • Proteggere uno staging → Chiudere l'accesso a un ambiente di collaudo prima che Google lo indicizzi
  • Aggiungere un account senza accesso SSH → Creare la riga dal browser e incollarla tramite il gestore file del provider
  • Migrare una configurazione → Ricostruire un file .htpasswd perduto a partire dalle credenziali note

Come usare il generatore in 3 passi

Passo 1: inserire nome utente e password

Digita il nome dell'account e la sua password. Il campo è nascosto per impostazione predefinita; clicca sull'icona a occhio per rileggere quanto hai scritto prima di confermare.

Passo 2: lasciare che il sale sia generato

Nella quasi totalità dei casi, lascia vuoto il campo del sale: il server estrarrà un sale casuale di 8 caratteri. Compilalo solo per riprodurre un hash esistente in modo identico.

Passo 3: copiare la riga

Compaiono due risultati: l'hash da solo e la riga .htpasswd completa. Copia quest'ultima, incollala nel tuo file e ricarica la configurazione del server.


Anatomia di una riga .htpasswd

Una riga si divide in due campi separati dai due punti:

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

Il secondo campo si scompone a sua volta in tre parti delimitate da $:

ParteEsempioRuolo
Identificativo dell'algoritmoapr1Indica al server che si tratta dell'MD5 con sale di Apache
SaleXq7nD2mR8 caratteri casuali, memorizzati in chiaro nel file
Digest5CqLZ.k1qLkOvVQ0uZ9Yl.22 caratteri, risultato delle 1.000 iterazioni

Il sale non è un segreto: è leggibile nel file. Il suo ruolo è impedire che una tabella pre-calcolata (rainbow table) serva a risalire alla password, e garantire che due account con la stessa password non abbiano lo stesso digest.


Che cosa fa davvero l'algoritmo $apr1$

APR1-MD5 non è un semplice md5(password + sale). Concatena:

  1. Due impronte iniziali - una su password + $apr1$ + sale, l'altra su password + sale + password
  2. Una miscelazione dipendente dalla lunghezza - frammenti della seconda impronta vengono reimmessi nella prima, byte per byte
  3. 1.000 iterazioni - a ogni giro, password, sale e impronta precedente sono ricombinati secondo uno schema che dipende dal numero del giro
  4. Una codifica base64 «crypt» - i 16 byte finali vengono riletti in ordine intrecciato e codificati sull'alfabeto ./0-9A-Za-z

Sono queste 1.000 iterazioni a fare la differenza rispetto a un MD5 nudo: moltiplicano per mille il costo di un tentativo, rallentando nella stessa misura un attacco a dizionario.


Proteggere una directory con Apache

1. Creare il file

Colloca il tuo file .htpasswd fuori dalla radice web, perché non venga mai servito via HTTP:

/var/www/secrets/.htpasswd

2. Dichiarare la protezione

Nel .htaccess della directory da proteggere, oppure nel blocco <Directory> del tuo VirtualHost:

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

3. Ricaricare la configurazione

sudo apachectl configtest && sudo systemctl reload apache2

Su nginx, la stessa coppia di file si dichiara così:

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

APR1-MD5 a confronto con gli altri formati .htpasswd

FormatoPrefissoCosto di calcoloVerdetto
bcrypt$2y$Regolabile (fattore di costo)Consigliato per ogni nuovo progetto
APR1-MD5$apr1$1.000 iterazioni MD5Accettabile, compatibilità massima
SHA-1{SHA}1 iterazione, senza saleDa evitare: niente sale, violabile con tabelle
crypt() DESnessuno25 iterazioni, troncato a 8 caratteriObsoleto, da non usare più

In sintesi: se il tuo server accetta bcrypt (htpasswd -B), usalo. APR1-MD5 è la migliore opzione rimasta quando bcrypt non è disponibile, e vale infinitamente più di un {SHA} senza sale.


Verificare l'hash da riga di comando

A parità di sale, il risultato di questo strumento è identico a quello delle utility di sistema:

# Con htpasswd (pacchetto apache2-utils / httpd-tools)
htpasswd -nbm admin miaPassword

# Con OpenSSL, imponendo il sale
openssl passwd -apr1 -salt Xq7nD2mR miaPassword

Il secondo esempio serve anche a collaudare questo strumento: inserisci lo stesso sale nel modulo e devi ottenere esattamente la stessa stringa.

Per verificare che una password corrisponda a una riga esistente, rileggi il sale contenuto nell'hash memorizzato e ripeti il calcolo con quel sale.


FAQ - Domande frequenti

D: Che cos'è il formato $apr1$?

R: È il formato di hashing storico di Apache, chiamato anche APR1-MD5. Applica 1.000 iterazioni di MD5 sulla password e su un sale di 8 caratteri, poi codifica il risultato nell'alfabeto base64 di crypt. Il prefisso $apr1$ funge da identificativo dell'algoritmo.


D: APR1-MD5 è ancora sicuro?

R: È ben più solido di un MD5 nudo, ma resta rapido da calcolare per un attaccante dotato di GPU. Per un progetto nuovo, preferisci bcrypt tramite htpasswd -B. APR1-MD5 conserva il suo interesse quando prevale la compatibilità: vecchie versioni di Apache, nginx senza supporto bcrypt, apparati di rete.


D: Questo hash funziona con nginx?

R: Sì. Il modulo ngx_http_auth_basic_module di nginx legge il formato Apache, $apr1$ compreso. La riga generata si usa così com'è con auth_basic_user_file.


D: Perché ottengo un hash diverso ogni volta?

R: A ogni generazione viene estratto un nuovo sale casuale. I due hash sono validi per la stessa password: in fase di verifica il server rilegge il sale memorizzato nell'hash e rifà il calcolo. Compila il campo del sale se vuoi un risultato riproducibile.


D: La password viene memorizzata da qualche parte?

R: No. Transita in HTTPS verso l'API CaptainDNS per il tempo del calcolo, poi viene scartata. Né database, né log con la password in chiaro.


D: Posso usare accenti o simboli?

R: Sì, il calcolo lavora sui byte UTF-8 della password. Un'avvertenza: un client HTTP datato può codificare i caratteri non ASCII in modo diverso, e l'autenticazione fallirebbe. Nel dubbio, resta in ASCII.


D: Dove va collocato il file .htpasswd?

R: Fuori dalla radice web, per esempio in /var/www/secrets/. Se si trova in una directory servita via HTTP, un visitatore potrebbe scaricarlo e attaccare gli hash offline.


Strumenti complementari

StrumentoUtilità
Generatore di passwordEstrarre una password solida prima di hasharla
Generatore di hashCalcolare MD5, SHA-1, SHA-256 e SHA-512 di un testo
Codificatore Base64Codificare l'header Authorization di una richiesta Basic
Analizzatore di header HTTPControllare gli header restituiti da un'area protetta
Test HSTSAssicurarsi che l'accesso protetto passi davvero da HTTPS

Risorse utili


Impegno sulla riservatezza

La tua password è trasmessa all'API CaptainDNS unicamente per calcolare l'hash, su una connessione cifrata. Non è né memorizzata né registrata. Restano solo metriche tecniche anonime (durata di elaborazione, codice di risposta).