htpasswd Generator — bcrypt, Apache MD5 (apr1) & Basic Auth
htpasswd-Einträge mit bcrypt, Apache MD5 (apr1), SHA-1 u. v. m. erzeugen. Fertige Konfigs für Apache, nginx & Docker. 100 % im Browser — kein Upload.
Vorhandenen Hash verifizieren
Was ist eine htpasswd-Datei?
Eine .htpasswd-Datei speichert die Zugangsdaten für HTTP Basic Authentication. Jede Zeile ist ein einzelnes username:hash-Paar, wobei der Hash ein Einweg-Digest des Passworts ist — der Klartext wird nie gespeichert. Webserver lesen diese Datei, um zu entscheiden, wer auf eine geschützte URL zugreifen darf. Bei Apache referenziert eine .htaccess-Datei (oder ein <Directory>-Block) die .htpasswd-Datei und fordert den Browser vor der Auslieferung der Seite zur Eingabe von Benutzername und Passwort auf.
Das Hash-Format hängt vom verwendeten Algorithmus ab. Apaches htpasswd-Tool kann mehrere ausgeben: bcrypt (Zeilen mit $2y$) ist am stärksten und wird für Apache, Docker Registry und Caddy empfohlen; apr1 (Apache MD5, beginnend mit $apr1$) ist am portabelsten und der sichere Standard für nginx; SHA-1 (beginnend mit {SHA}) ist unsalted und gilt als unsicher; crypt (traditionelles DES) ist veraltet und kürzt Passwörter auf 8 Zeichen; und plain speichert das Passwort im Klartext, was in der Produktion niemals verwendet werden sollte.
Dieser Generator läuft vollständig in Ihrem Browser — kein Benutzername, kein Passwort und kein Hash wird jemals hochgeladen. Wenn Sie ein starkes Passwort für Ihren Eintrag benötigen, verwenden Sie unseren Zufallspasswort-Generator. Um den Authorization: Basic-Header manuell zu erstellen, ist der Credential einfach base64(user:password), den Sie mit unserem Base64-Encoder erzeugen können. Und sobald Ihr Endpunkt geschützt ist, testen Sie ihn per Kommandozeile mit unserem cURL Command Builder.
# Apache htpasswd CLI equivalents (apache2-utils / httpd-tools) # bcrypt entry, printed to stdout (recommended; -B = bcrypt, -n = no file, -b = password on CLI) htpasswd -Bbn admin 's3cret' # → admin:$2y$10$N9qo8uLOickgx2ZMRZoMye... # apr1 (Apache MD5) entry, portable for nginx — no apache2-utils needed printf "admin:$(openssl passwd -apr1 's3cret')\n" # → admin:$apr1$k3l4Hj9.$qN8... # Append a user to an existing file from the shell htpasswd -B /etc/apache2/.htpasswd alice # Note: nginx delegates bcrypt to the system crypt(); on Alpine/musl or old # glibc that fails — prefer apr1 for nginx to stay portable.
Hauptfunktionen
Mehrere Hash-Algorithmen
Erzeugen Sie bcrypt ($2y$)-, apr1 / Apache MD5 ($apr1$)- und SHA-1 ({SHA})-Einträge — plus eine Klartextoption zum Testen. Jeder verwendet einen frischen kryptografischen Salt, sofern das Format dies unterstützt.
Generieren und Verifizieren
Erstellen Sie neue Einträge oder prüfen Sie vorhandene. Fügen Sie eine gespeicherte user:hash-Zeile und ein Kandidatenpasswort ein, um sofort zu bestätigen, ob sie übereinstimmen — hilfreich beim Debuggen eines 401 in der Produktion.
Nach Server auswählen
Wählen Sie Apache, nginx, Docker oder Caddy, und der korrekte Algorithmus wird automatisch ausgewählt — bcrypt wo unterstützt, apr1 für nginx-Portabilität — sodass Sie stille crypt()-Fehler vermeiden.
Fertige Konfigurations-Blöcke
Erhalten Sie sechs kopierfertige Konfigurations-Snippets — Apache .htaccess, nginx auth_basic, Docker, Kubernetes ingress-nginx, Caddy und Traefik — bereits auf Ihren generierten .htpasswd-Eintrag abgestimmt.
100 % clientseitig
Alle Hashes werden lokal in Ihrem Browser via Web Crypto und einer mitgelieferten bcrypt-Implementierung berechnet. Kein Benutzername, Passwort oder Hash wird jemals an einen Server gesendet, sodass Sie Produktions-Credentials privat erzeugen können.
Beispiele
bcrypt-Eintrag (empfohlen)
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Ein bcrypt-Eintrag mit $2y$-Präfix und Cost 10. Dies ist das stärkste und portabelste Format — verwenden Sie es für Apache, Docker Registry, Caddy und Traefik.
apr1-Eintrag (portables nginx)
admin:$apr1$kl3H9j2.$qN8vY7tLp2mZ0xW5cR4fK1
Apache MD5 (apr1) mit einem 8-Zeichen-Salt nach dem $apr1$-Marker. Der sichere Standard für nginx, bei dem die bcrypt-Verifikation von einer unzuverlässigen System-crypt() abhängt.
SHA-1-Eintrag (veraltet)
admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= Ein {SHA}-Eintrag ist das base64 eines unsalted SHA-1-Digests. Apache und nginx akzeptieren ihn, aber er ist unsalted und unsicher — nur zur Abwärtskompatibilität enthalten.
Authorization: Basic-Header
Authorization: Basic YWRtaW46czNjcmV0
Das clientseitige Credential für denselben Benutzer: base64('admin:s3cret'). Senden Sie diesen Header mit curl -H oder Postman, um sich zu authentifizieren, ohne eine .htpasswd-Datei zu benötigen.
Mehrbenutzige .htpasswd-Datei
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy alice:$2y$10$3bQ8xY7tLp2mZ0xW5cR4fO9vK1jH6sD2nG8aQ5wE3rT7uI4oP1cm bob:$apr1$mZ0xW5cR$4fK1jH6sD2nG8aQ5wE3rT2
Eine username:hash-Zeile pro Benutzer. Algorithmen können in derselben Datei gemischt werden — hier koexistieren zwei bcrypt-Einträge und ein apr1-Eintrag für drei Benutzer.
Verwendung
- 1
Server & Algorithmus konfigurieren
Wählen Sie Ihren Zielserver (Apache, nginx, Docker, Caddy). Der richtige Algorithmus wird automatisch ausgewählt — bcrypt für Apache/Docker/Caddy, apr1 für portables nginx — kann aber überschrieben und der bcrypt-Cost angepasst werden.
- 2
Hash generieren
Geben Sie Benutzernamen und Passwort ein (oder klicken Sie auf Zufallspasswort) und klicken Sie auf Generieren. Der Hash wird lokal mit einem frischen Zufallssalt berechnet. Salt jederzeit neu würfeln, um einen neuen Eintrag zu erzeugen.
- 3
Eintrag kopieren
Kopieren Sie die user:hash-Zeile für Ihre .htpasswd-Datei, den echo >>-Befehl für die Shell oder den Authorization: Basic-Header für curl und Postman.
- 4
Konfiguration bereitstellen
Fügen Sie den generierten Konfigurationsblock in Ihre Apache-.htaccess, den nginx-Server-Block, Docker, Kubernetes-Ingress, Caddy oder Traefik-Konfiguration ein, verweisen Sie auf Ihre .htpasswd-Datei und laden Sie den Server neu.
Anwendungsfälle
- Apache-Verzeichnisschutz
- Sichern Sie einen Ordner mit HTTP Basic Auth per .htaccess-Datei und einer AuthUserFile-Direktive. Fügen Sie den bcrypt-Eintrag und den generierten Apache-Konfigurationsblock ein, um eine Anmeldung für jeden Pfad zu erzwingen.
- nginx auth_basic
- Schützen Sie einen Location- oder Server-Block mit auth_basic und auth_basic_user_file. Verwenden Sie das apr1-Format, damit die Verifikation über Alpine, Debian und andere Basis-Images hinweg zuverlässig funktioniert.
- Docker Registry
- Eine private Docker Registry akzeptiert nur bcrypt-htpasswd-Einträge. Erzeugen Sie eine $2y$-Zeile mit htpasswd -Bbn, binden Sie sie in den Registry-Container ein und authentifizieren Sie Ihr docker login.
- Kubernetes ingress-nginx
- Erstellen Sie ein basic-auth-Secret aus Ihrer .htpasswd-Datei und referenzieren Sie es mit den Annotationen nginx.ingress.kubernetes.io/auth-type und auth-secret, um eine Ingress-Route abzusichern.
- Caddy & Traefik
- Caddys basic_auth-Direktive und Traefiks basicauth-Middleware erwarten beide bcrypt-Hashes. Fügen Sie den generierten Eintrag direkt in Ihre Caddyfile oder Traefik-Labels/Dynamic-Config ein.
- curl- & Postman-Authorization-Header
- Überspringen Sie die Datei für schnelle Tests: Kopieren Sie den Authorization: Basic-Header, um Credentials direkt zu senden. Fügen Sie ihn als curl-H-Flag oder in eine Postman-Anfrage ein, um einen geschützten Endpunkt zu erreichen.
Technische Details
- bcrypt ($2y$)
- Ein adaptiver, gesalteter Hash basierend auf der Blowfish-Verschlüsselung mit einem konfigurierbaren Cost-Faktor. Jeder Eintrag enthält einen zufälligen 16-Byte-Salt und den Cost, sodass identische Passwörter unterschiedliche Hashes erzeugen. Hinweis: bcrypt kürzt das Passwort auf 72 Bytes — darüber hinausgehende Zeichen werden ignoriert.
- apr1 (Apache MD5)
- Apaches iterierte, gesaltete MD5-Variante ($apr1$ + 8-Zeichen-Salt). Sie führt 1.000 MD5-Runden aus, was weit schwächer als bcryptes adaptiver Cost ist, aber von Apache und nginx nativ implementiert wird und damit das portabelste Format über Plattformen und Basis-Images hinweg ist.
- SHA-1 und crypt
- SHA-1-Einträge ({SHA} + base64-Digest) sind unsalted, sodass identische Passwörter identische Hashes ergeben und für Rainbow-Table-Angriffe anfällig sind — nur zur Abwärtskompatibilität enthalten. Traditionelles crypt (DES) ist noch schwächer und kürzt Passwörter stillschweigend auf 8 Zeichen.
- Salt & Iterationen
- Salting verhindert vorberechnete (Rainbow-Table-)Angriffe, indem jeder Hash einzigartig wird. bcrypt verwendet einen 128-Bit-Zufallssalt mit konfigurierbarem Cost; apr1 einen 8-Zeichen-Salt mit 1.000 festen Iterationen. Verwenden Sie Salt neu würfeln, um einen anderen gültigen Hash für dasselbe Passwort zu erzeugen.
- Base64 & UTF-8-Behandlung
- Passwörter werden vor dem Hashing als UTF-8-Bytes kodiert, sodass Nicht-ASCII-Zeichen konsistent behandelt werden. Der Authorization: Basic-Header ist das base64 der rohen UTF-8-Bytes von username:password, entsprechend dem, was Server auf der Empfängerseite dekodieren.
- Hinweise & Vorbehalte
- Generierte Hashes werden lokal berechnet und nie gegen einen Live-Server verifiziert. Kopierte Einträge und heruntergeladene .htpasswd-Dateien landen in Plaintext-Hash-Form in Ihrer Zwischenablage und auf der Festplatte — behandeln Sie sie wie Geheimnisse, schränken Sie die Dateiberechtigungen ein und löschen Sie Ihre Zwischenablage nach dem Einfügen in Produktions-Konfigurationen.
Best Practices
- bcrypt bevorzugen, wo unterstützt
- Verwenden Sie bcrypt ($2y$) für Apache, Docker, Caddy und Traefik — es ist gesaltet, adaptiv und deutlich stärker als apr1 oder SHA-1. Reservieren Sie apr1 nur für nginx, wenn bcryptes Abhängigkeit von der System-crypt() es unzuverlässig macht.
- Datei außerhalb des Web-Root speichern
- Halten Sie .htpasswd aus jedem ausgelieferten Verzeichnis heraus, damit sie nie per HTTP heruntergeladen werden kann. Setzen Sie chmod 640 und machen Sie sie dem Webserver-Benutzer zum Eigentümer, damit der Server sie lesen kann, andere Konten jedoch nicht.
- Immer über HTTPS betreiben
- Basic Auth überträgt Credentials bei jeder Anfrage als umkehrbares base64. Ohne TLS kann jeder im Netzwerkpfad das Passwort lesen. Aktivieren Sie Basic Auth nie über plain HTTP — terminieren Sie TLS vor dem geschützten Endpunkt.
- Einzigartige, starke Passwörter verwenden
- Jedes Konto sollte sein eigenes hochentropisches Passwort haben, das nie über Dienste hinweg wiederverwendet wird. Generieren Sie eines mit unserem Zufallspasswort-Generator und speichern Sie es in einem Passwort-Manager, anstatt es manuell zu erfinden.
Häufig gestellte Fragen
bcrypt vs. apr1 — welches soll ich wählen?
Unterstützt nginx bcrypt?
Wie behebe ich den nginx-Fehler `crypt_r() failed (22: Invalid argument)`?
Wo soll ich die .htpasswd-Datei ablegen und welche Berechtigungen?
Wie konfiguriere ich Basic Auth in .htaccess / nginx?
Werden meine Passwörter irgendwo hochgeladen?
Was ist der Unterschied zwischen $2a$, $2b$ und $2y$ bei bcrypt?
Welchen bcrypt-Cost sollte ich verwenden?
htpasswd vs. Authorization: Basic-Header — was ist der Unterschied?
Ich habe apache2-utils nicht installiert — wie erzeuge ich einen htpasswd-Eintrag?
Was bedeuten die htpasswd-Flags -B, -Bbn, -bnB?
Warum erfordert Docker Registry bcrypt?
Ist Basic Auth sicher?
Verwandte Werkzeuge
Alle Werkzeuge anzeigen →cURL-Befehlsgenerator & Builder
Web & API
curl-Befehle im Browser erstellen — Methode, Header, Auth und Body einstellen, fertig copierbaren Befehl sofort erhalten. Vorlagen für Bearer, POST JSON, Datei-Upload. Kostenlos, privat.
Zahlensystem-Konverter — Binär, Hex, Dezimal & Oktal
Konvertierungswerkzeuge
Zahlen zwischen Binär, Hexadezimal, Dezimal, Oktal und beliebigen Basen (2–36) sofort konvertieren. Kostenlos, privat, ohne Anmeldung — alles läuft in Ihrem Browser.
Base64-Dekodierer & -Kodierer
Kodierung & Formatierung
Base64 online kostenlos dekodieren und kodieren. Echtzeitkonvertierung mit voller UTF-8- und Emoji-Unterstützung. 100 % privat — läuft in Ihrem Browser. Keine Anmeldung nötig.
Case-Konverter — UPPERCASE, lowercase, camelCase & mehr
Textverarbeitung
Konvertieren Sie Text sofort zwischen UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE und 6 weiteren Formaten. Kostenlos, nur im Browser, ohne Anmeldung.
Farbkonverter — HEX, RGB, HSL & OKLCH
Konvertierungswerkzeuge
Konvertieren Sie HEX zu RGB, HSL, OKLCH, OKLAB und CMYK direkt im Browser — jedes Format mit einem Klick kopieren. Kostenlos, ohne Anmeldung, Ihre Farben verlassen die Seite nie.
Crontab Generator & Cron-Ausdruck Builder
Datum & Uhrzeit
Erstellen, validieren und entschlüsseln Sie Cron-Ausdrücke im Browser. Live-Vorschau der nächsten Läufe in lokaler Zeit oder UTC. POSIX-5-Feld-Syntax, Voreinstellungen, Klartextbeschreibung. Kostenlos, privat, ohne Anmeldung.