htpasswd-Generator

Erstelle aus Benutzername und Passwort eine .htpasswd-Zeile für Apache oder nginx sowie einen HTTP-Basic-Authorization-Header – mit bcrypt-, APR1- oder SHA-1-Hashing, komplett in deinem Browser.

Tool wird geladen…

htpasswd-GeneratorGib einen Benutzernamen und ein Passwort ein, um zwei Dinge auf einmal zu erhalten: eine fertig einfügbare .htpasswd-Zeile für die Basic-Auth von Apache oder nginx und den passenden HTTP-Basic-Authorization-Header, den dein Client senden würde. Der Header ist das Base64 von user:pass und wird sofort aktualisiert, während die gehashte .htpasswd-Zeile beim Klick auf Generieren berechnet wird. Alles läuft lokal mit der Web Crypto API und einem WebAssembly-Hasher im Browser, sodass dein Passwort niemals auf einen Server hochgeladen wird.

Was ist htpasswd-Generator?

Der htpasswd-Generator ist ein kostenloses Browser-Tool zum Erstellen von Zugangsdaten für die HTTP-Basic-Authentifizierung. Systemadministratoren und Webentwickler schützen damit ein Verzeichnis oder ein Admin-Panel mit Benutzername und Passwort, ohne das Kommandozeilen-Tool htpasswd von Apache installieren zu müssen. Es erzeugt eine einzige Zeile user:hash, die du an eine .htpasswd-Datei anhängst, wahlweise mit bcrypt (am stärksten, Format $2y$), APR1 (Apaches portables MD5, Format $apr1$) oder SHA-1 (Format SHA). Außerdem leitet es den passenden Authorization: Basic-Header ab, sodass du dieselben Zugangsdaten mit curl oder einem REST-Client testen kannst. Der bcrypt-Kostenfaktor lässt sich in den Einstellungen für stärkeres oder schnelleres Hashing anpassen.

So verwendest du htpasswd-Generator

  1. Gib den Benutzernamen ein, der sich anmelden wird.
  2. Tippe das Passwort ein, das das Konto schützt; es bleibt in diesem Feld und wird nirgendwohin gesendet.
  3. Kopiere den Basic-Authorization-Header sofort, wenn du ihn nur für eine API-Anfrage oder einen curl-Test brauchst.
  4. Öffne die Einstellungen, um den Hash-Algorithmus (bcrypt, APR1 oder SHA-1) und – bei bcrypt – den Kostenfaktor zu wählen.
  5. Klicke auf Generieren, um die gehashte .htpasswd-Zeile zu berechnen, und kopiere sie dann in die .htpasswd-Datei deines Servers.

Beispiele

bcrypt-Zeile für einen einzelnen Benutzer

Eingabe

Benutzer: admin, Passwort: s3cret, Algorithmus: bcrypt (Kosten 10)

Ausgabe

admin:$2y$10$... (ein 60 Zeichen langer bcrypt-Hash, jedes Mal zufälliger Salt)

HTTP-Basic-Header für einen API-Test

Eingabe

Benutzer: admin, Passwort: s3cret

Ausgabe

Basic YWRtaW46czNjcmV0

APR1-Zeile (Apache MD5) für ältere Konfigurationen

Eingabe

Benutzer: web, Passwort: pass123, Algorithmus: APR1

Ausgabe

web:$apr1$<salt>$<22-Zeichen-Hash>

Häufig gestellte Fragen

Wird mein Passwort an einen Server gesendet?
Nein. Sowohl der Basic-Header als auch der .htpasswd-Hash werden vollständig in deinem Browser mit der Web Crypto API und einem WebAssembly-Hasher im Browser berechnet. Nichts wird auf einen Server hochgeladen oder dort gespeichert, daher funktioniert das Tool offline und dein Passwort verlässt die Seite nie.
Welchen Hash sollte ich wählen?
Nimm bcrypt für neue Setups; es ist am widerstandsfähigsten gegen Knacken und wird von modernem Apache und nginx unterstützt. APR1 ($apr1$) ist Apaches portables MD5 und für ältere Konfigurationen nützlich. SHA-1 ({SHA}) ist am schwächsten und sollte vermieden werden, sofern ein System es nicht ausdrücklich verlangt.
Warum dauert der Generieren-Button einen Moment?
bcrypt und APR1 sind absichtlich langsam, um Brute-Force-Angriffen zu widerstehen, und bcrypt lädt bei der ersten Nutzung zusätzlich ein kleines WebAssembly-Modul. Ein höherer Kostenfaktor macht bcrypt langsamer, aber stärker. SHA-1 und der Basic-Header sind sofort da.
Stimmt es mit dem echten htpasswd-Befehl überein?
Ja. bcrypt-Zeilen verwenden das von Apache erwartete Präfix $2y$, APR1 nutzt das Standardformat $apr1$ mit zufälligem Salt und SHA-1 das {SHA}-Schema – alle kompatibel mit von htpasswd erzeugten Dateien.
Kann ich das für nginx verwenden?
Ja. Die auth_basic_user_file von nginx liest dasselbe .htpasswd-Format, sodass eine bcrypt- oder APR1-Zeile direkt funktioniert. nginx unterstützt {SHA} nicht, wähle dafür also bcrypt oder APR1.

Verwandte Tools