Generazione del file .htpasswd

Genera in sicurezza nel navigatore il file .htpasswd usato per l'autenticazione di base di Apache e Nginx. Sono previsti bcrypt, APR1-MD5 e SHA-1. Le parole d'ordine non vengono trasmesse ad alcun servente.

Consigli

  • Si raccomanda bcrypt, oggi l'algoritmo più sicuro, utilizzabile con Apache dalla versione 2.4 e con Nginx. Più si alza il valore del costo, più il calcolo rallenta e più l'insieme resiste agli attacchi esaustivi: dieci è il valore comunemente raccomandato.
  • APR1-MD5, riconoscibile dal prefisso $apr1$, si usa quando serve la compatibilità con le versioni di Apache anteriori alla 2.2 e funziona con quasi tutte le versioni di Apache e Nginx.
  • SHA-1, con il prefisso {SHA}, offre scarsa resistenza alle collisioni ed è oggi sconsigliato: usatelo soltanto in ambienti datati che ne richiedano la compatibilità.
  • Si raccomanda vivamente di collocare il file .htpasswd in una posizione non raggiungibile direttamente dal servente web, cioè fuori dalla radice dei documenti.
  • Usatelo insieme a HTTPS. Le credenziali dell'autenticazione di base sono soltanto codificate in Base64 e non cifrate: in HTTP viaggerebbero in chiaro.

Domande frequenti

Aggiungete quanto segue nel file .htaccess oppure nella configurazione principale, indicando in AuthUserFile il percorso del file generato.
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Aggiungete quanto segue nel file di configurazione o nel blocco del servente interessato.
location /admin {
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
}
Nginx prevede tanto bcrypt quanto APR1-MD5.

In linea di principio si raccomanda bcrypt, che funziona senza difficoltà con Apache dalla versione 2.4 e con Nginx. APR1-MD5 serve per le versioni datate di Apache e per i casi in cui occorra compatibilità. SHA-1 è oggi considerato debole: non sceglietelo senza una ragione precisa.

Basta accodare la riga generata, nella forma utente:sintesi, alla fine del file. Ogni riga corrisponde a un utente; le righe vuote e quelle di commento, che cominciano con #, sono ignorate.

Sì. Tutti i calcoli delle sintesi avvengono nel navigatore e le parole d'ordine inserite non sono trasmesse ad alcun servente. Usate comunque lo strumento su una pagina sicura in HTTPS e maneggiate con cura il file generato.
Tool-kun

A proposito — perché l'autenticazione di base, per quanto antica, si usa ancora

L'autenticazione di base di HTTP è un meccanismo semplicissimo, definito nel 1999 dalla norma RFC 2617 e oggi aggiornato dalla RFC 7617. Il funzionamento è elementare: nome utente e parola d'ordine si separano con i due punti, si codificano in Base64 e si inseriscono nell'apposita intestazione di autorizzazione.

Proprio per la sua semplicità è tuttora largamente usata, in particolare come prima linea di difesa per gli ambienti di prova e gli strumenti interni, in combinazione con le restrizioni per indirizzo IP, oppure per proteggere in fretta il punto di accesso di un'interfaccia. Il vantaggio maggiore è che funziona con due o tre righe di configurazione e non richiede né componenti aggiuntivi né una base di dati.

Va però usata con cautela: non prevede una disconnessione, poiché la sessione dura finché il navigatore resta aperto, e non offre di serie né la scadenza delle parole d'ordine né l'autenticazione a più fattori. Per i servizi che richiedono un'autenticazione vera e propria conviene valutare OAuth 2.0 o i protocolli di identità che vi si fondano.