htpasswd-Generator: bcrypt, apr1, SHA-1 und crypt

Machen Sie aus Benutzername und Passwort eine Zeile Benutzer:Hash für eine .htpasswd-Datei von Apache. Alle Formate - Klartext, crypt, apr1, SHA-1 und bcrypt - werden im Browser berechnet und gegen openssl passwd, Apache htpasswd und glibc crypt geprüft; das Passwort verlässt den Tab nicht.

Läuft lokal in deinem Browser

So erstellen Sie einen htpasswd-Eintrag für die Apache-Basisauthentifizierung

Benutzername und Passwort eingeben, Format wählen und auf htpasswd-Eintrag erzeugen klicken. Die Seite liefert eine Zeile Benutzer:Hash, die direkt in eine .htpasswd-Datei passt, und nennt vorher die Einschränkungen des gewählten Formats.

Gerechnet wird vollständig im Browser. Der apr1-Eintrag stimmt mit openssl passwd -apr1 und htpasswd -m überein, der bcrypt-Eintrag mit den $2y$-Zeilen aus htpasswd -B, und der SHA-1-Eintrag mit der {SHA}-Form von htpasswd -s. Das Passwort wird nicht hochgeladen, und beim Tippen verlässt keine Anfrage den Tab.

  1. Geben Sie den Benutzernamen genau so ein, wie er später am Anmeldefenster steht. Apache begrenzt ihn auf 255 Bytes und lehnt den Doppelpunkt ab, weil er die beiden Hälften der Zeile trennt.
  2. Geben Sie das Passwort ein. Unter Windows kürzt htpasswd Passwörter auf 255 Zeichen, und bcrypt ignoriert alles nach den ersten 72 Bytes; die Seite weist auf die jeweilige Grenze hin.
  3. Wählen Sie das Format. bcrypt ist heute die Empfehlung, MD5 (apr1) schreibt htpasswd standardmäßig, und crypt, SHA-1 sowie Klartext bleiben für alte Server und bestehende Dateien verfügbar.
  4. Stellen Sie bei bcrypt den Kostenfaktor ein. Apache beginnt bei 5 und erlaubt 4-17; diese Seite beginnt bei 10 und erlaubt 4-14, weil die Berechnung im Browser läuft und sich mit jedem Schritt verdoppelt.
  5. Klicken Sie auf htpasswd-Eintrag erzeugen, lesen Sie die Hinweise über dem Ergebnis und übernehmen Sie die Zeile mit Kopieren. Prüfen Sie sie auf dem Server mit htpasswd -vb /etc/apache2/.htpasswd alice.

Was jedes htpasswd-Format schreibt und welches Sie wählen sollten

Was die Formate schreiben

plain speichert das Passwort im Klartext, und httpd akzeptiert das nur unter Windows und Netware. crypt ist die alte Unix-Routine: 13 Zeichen, ein Salt aus 2 Zeichen, und nur die ersten 8 Zeichen des Passworts - der Rest wird still verworfen, weshalb eine lange Passphrase hier an Wirkung verliert.

MD5 (apr1) schreibt $apr1$Salt$Hash: ein Apache-eigenes Verfahren mit 1000 MD5-Runden über Passwort und 8-Zeichen-Salt, das htpasswd -m erzeugt. SHA-1 schreibt {SHA} gefolgt von der Base64-Kodierung eines SHA-1-Hashs; anders als die übrigen Formate hat es kein Salt, ein Passwort ergibt also immer dieselbe Zeile. bcrypt schreibt $2y$Kosten$Salt$Hash, mit 16 zufälligen Salt-Bytes und 2^Kosten Wiederholungen des Schlüsselplans.

Wohin der Eintrag gehört

Eine .htpasswd-Datei enthält eine Zeile Benutzer:Hash pro Konto und wird von Apache über AuthUserFile gelesen. Ein minimal geschütztes Verzeichnis nutzt AuthType Basic, AuthName "Restricted", AuthUserFile /etc/apache2/.htpasswd und Require valid-user. Legen Sie die Datei außerhalb des Dokumentenstamms ab, nur lesbar für den Webserver-Benutzer.

Auf der Kommandozeile erzeugt htpasswd dieselben Zeilen: -B für bcrypt (-C setzt die Kosten), -m für apr1, -s für SHA-1 und -d für crypt. Eine Datei darf Formate mischen, eine alte crypt-Zeile und eine neue bcrypt-Zeile können also nebeneinander stehen; prüfen Sie jede Zeile mit htpasswd -vb Datei Benutzer.

Sicherheitshinweise

Die HTTP-Basisauthentifizierung sendet das Passwort bei jeder Anfrage base64-kodiert, die Verbindung muss also HTTPS sein: der Hash schützt die Datei, nicht die Leitung. crypt, SHA-1 und apr1 sind schnell zu berechnen - genau das will ein Angreifer mit der gestohlenen Datei; nutzen Sie bcrypt für neue Einträge und ersetzen Sie alte Zeilen, sobald Konten angefasst werden.

Der Generator speichert und überträgt das Passwort nicht: gerechnet wird in der Seite, das Salt kommt vom Zufallsgenerator des Browsers. Kosten 10 brauchen hier etwa eine Fünftelsekunde, Kosten 12 rund eine Sekunde; deshalb endet das Feld bei 14, obwohl htpasswd bis 17 akzeptiert.

Zuletzt verwendet: