Zum Hauptinhalt springen

APR1-MD5-Hash-Generator

Ein Apache-Verzeichnis oder eine Apache-Datei in 3 Klicks schützen

Sie müssen ein Konto in eine .htpasswd-Datei eintragen, haben aber den Befehl htpasswd nicht zur Hand? Geben Sie Benutzername und Ihr eigenes Passwort ein: Die Zeile im Format $apr1$ ist sofort einsatzbereit. Noch kein Passwort? Eine Schaltfläche neben dem Feld kann eines erzeugen, das ist aber optional.

Geben Sie den Namen des Kontos ein, das in der .htpasswd-Datei angelegt werden soll.

Wichtige Funktionen

Natives $apr1$-Format

Das gesalzene MD5 von Apache, mit seinen 1.000 Iterationen und seiner eigenen Base64-Kodierung. Kompatibel mit Apache, nginx und Traefik.

Sicheres Zufalls-Salt

Bei jedem Aufruf ein Salt aus 8 Zeichen aus einem kryptografischen Generator. Zwei Konten mit gleichem Passwort erhalten unterschiedliche Hashes.

Fertige Zeile

Das Ergebnis erscheint als vollständige Zeile user:hash, die direkt in Ihre .htpasswd-Datei passt.

Eigenes Salt möglich

Geben Sie Ihr eigenes Salt an, um einen bestehenden Hash zu reproduzieren und zwei Einträge derselben Datei zu vergleichen.

Nichts wird gespeichert

Das Passwort dient nur der Berechnung und verschwindet danach. Keine Spur in der Datenbank, kein Klartextpasswort im Log.

Warum einen APR1-MD5-Hash online erzeugen?

Die HTTP-Basic-Authentifizierung ist nach wie vor der schnellste Weg, einen Administrationsbereich, eine Staging-Umgebung oder ein internes Dashboard abzuriegeln. Sie stützt sich auf eine .htpasswd-Datei, in der jede Zeile einen Benutzernamen mit einem gehashten Passwort verbindet - nie mit einem Klartextpasswort.

Der Haken: Für diesen Hash braucht man normalerweise den Befehl htpasswd, also das Paket apache2-utils unter Debian oder httpd-tools unter RHEL. Auf einem Windows-Arbeitsplatz, im Shared Hosting oder in einer Weboberfläche fehlt dieser Befehl häufig.

Drei Situationen, in denen dieser Generator hilft:

  • Eine Staging-Umgebung schützen → Den Zugang zu einer Testumgebung schließen, bevor Google sie indexiert
  • Ein Konto ohne SSH-Zugang anlegen → Die Zeile im Browser erzeugen und über den Dateimanager des Hosters einfügen
  • Eine Konfiguration migrieren → Eine verlorene .htpasswd-Datei aus den bekannten Zugangsdaten wiederherstellen

So nutzen Sie den Generator in 3 Schritten

Schritt 1: Benutzername und Passwort eingeben

Tragen Sie den Kontonamen und das Passwort ein. Das Feld ist standardmäßig verborgen; klicken Sie auf das Auge-Symbol, um Ihre Eingabe vor dem Absenden zu prüfen.

Schritt 2: Das Salt erzeugen lassen

In nahezu allen Fällen lassen Sie das Salt-Feld leer: Serverseitig wird ein zufälliges Salt aus 8 Zeichen gezogen. Füllen Sie es nur aus, um einen bestehenden Hash exakt zu reproduzieren.

Schritt 3: Die Zeile kopieren

Zwei Ergebnisse werden angezeigt: der Hash allein und die vollständige .htpasswd-Zeile. Kopieren Sie letztere, fügen Sie sie in Ihre Datei ein und laden Sie die Serverkonfiguration neu.


Aufbau einer .htpasswd-Zeile

Eine Zeile besteht aus zwei durch einen Doppelpunkt getrennten Feldern:

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

Das zweite Feld zerfällt seinerseits in drei durch $ getrennte Teile:

TeilBeispielFunktion
Algorithmus-Kennungapr1Sagt dem Server, dass es sich um das gesalzene MD5 von Apache handelt
SaltXq7nD2mR8 zufällige Zeichen, im Klartext in der Datei gespeichert
Digest5CqLZ.k1qLkOvVQ0uZ9Yl.22 Zeichen, das Ergebnis der 1.000 Iterationen

Das Salt ist kein Geheimnis: Es steht lesbar in der Datei. Seine Aufgabe ist es, vorberechnete Tabellen (Rainbow Tables) unbrauchbar zu machen und dafür zu sorgen, dass zwei Konten mit demselben Passwort nicht denselben Digest bekommen.


Was der $apr1$-Algorithmus tatsächlich tut

APR1-MD5 ist kein einfaches md5(Passwort + Salt). Es verkettet mehrere Schritte:

  1. Zwei Ausgangs-Digests - einen über Passwort + $apr1$ + Salt, den anderen über Passwort + Salt + Passwort
  2. Eine längenabhängige Mischung - Bruchstücke des zweiten Digests fließen Byte für Byte in den ersten zurück
  3. 1.000 Iterationen - in jeder Runde werden Passwort, Salt und vorheriger Digest nach einem Muster neu kombiniert, das von der Rundennummer abhängt
  4. Eine crypt-Base64-Kodierung - die letzten 16 Bytes werden in verschränkter Reihenfolge gelesen und über dem Alphabet ./0-9A-Za-z kodiert

Genau diese 1.000 Iterationen machen den Unterschied zu einem nackten MD5: Sie vertausendfachen die Kosten eines einzelnen Versuchs und bremsen einen Wörterbuchangriff im selben Maß aus.


Ein Verzeichnis mit Apache schützen

1. Die Datei anlegen

Legen Sie Ihre .htpasswd-Datei außerhalb des Web-Roots ab, damit sie niemals über HTTP ausgeliefert wird:

/var/www/secrets/.htpasswd

2. Den Schutz deklarieren

In der .htaccess des zu schützenden Verzeichnisses oder im <Directory>-Block Ihres VirtualHosts:

AuthType Basic
AuthName "Geschuetzter Bereich"
AuthUserFile /var/www/secrets/.htpasswd
Require valid-user

3. Die Konfiguration neu laden

sudo apachectl configtest && sudo systemctl reload apache2

Bei nginx wird dasselbe Dateipaar so deklariert:

location /admin/ {
    auth_basic           "Geschuetzter Bereich";
    auth_basic_user_file /var/www/secrets/.htpasswd;
}

APR1-MD5 im Vergleich zu den anderen .htpasswd-Formaten

FormatPräfixRechenaufwandUrteil
bcrypt$2y$Einstellbar (Kostenfaktor)Empfohlen für jedes neue Projekt
APR1-MD5$apr1$1.000 MD5-IterationenVertretbar, maximale Kompatibilität
SHA-1{SHA}1 Iteration, ohne SaltMeiden: kein Salt, per Tabelle knackbar
crypt() DESkeines25 Iterationen, nach 8 Zeichen abgeschnittenVeraltet, nicht mehr verwenden

Kurz gesagt: Akzeptiert Ihr Server bcrypt (htpasswd -B), nehmen Sie bcrypt. APR1-MD5 ist die beste verbleibende Wahl, wenn bcrypt nicht verfügbar ist - und es ist ungleich besser als ein {SHA} ohne Salt.


Den Hash auf der Kommandozeile prüfen

Bei gleichem Salt liefert dieses Werkzeug exakt dasselbe wie die Systemwerkzeuge:

# Mit htpasswd (Paket apache2-utils / httpd-tools)
htpasswd -nbm admin meinPasswort

# Mit OpenSSL, mit vorgegebenem Salt
openssl passwd -apr1 -salt Xq7nD2mR meinPasswort

Das zweite Beispiel dient zugleich als Gegenprobe: Tragen Sie dasselbe Salt im Formular ein, muss exakt dieselbe Zeichenkette herauskommen.

Um zu prüfen, ob ein Passwort zu einer bestehenden Zeile passt, lesen Sie das Salt aus dem gespeicherten Hash und wiederholen die Berechnung mit diesem Salt.


FAQ - Häufige Fragen

F: Was ist das $apr1$-Format?

A: Es ist das historische Passwortformat von Apache, auch APR1-MD5 genannt. Es wendet 1.000 MD5-Iterationen auf das Passwort und ein 8-stelliges Salt an und kodiert das Ergebnis im Base64-Alphabet von crypt. Das Präfix $apr1$ dient als Algorithmus-Kennung.


F: Ist APR1-MD5 noch sicher?

A: Es ist deutlich robuster als ein nacktes MD5, bleibt für einen Angreifer mit GPUs aber schnell berechenbar. Für neue Projekte greifen Sie besser zu bcrypt über htpasswd -B. APR1-MD5 behält seinen Wert, wo Kompatibilität vorgeht: ältere Apache-Versionen, nginx ohne bcrypt-Unterstützung, Netzwerk-Appliances.


F: Funktioniert dieser Hash mit nginx?

A: Ja. Das nginx-Modul ngx_http_auth_basic_module liest das Apache-Format, $apr1$ eingeschlossen. Die erzeugte Zeile lässt sich unverändert mit auth_basic_user_file verwenden.


F: Warum erhalte ich jedes Mal einen anderen Hash?

A: Bei jeder Erzeugung wird ein neues Zufalls-Salt gezogen. Beide Hashes sind für dasselbe Passwort gültig: Bei der Prüfung liest der Server das im Hash gespeicherte Salt und rechnet erneut. Füllen Sie das Salt-Feld aus, wenn Sie ein reproduzierbares Ergebnis wollen.


F: Wird das Passwort irgendwo gespeichert?

A: Nein. Es wandert für die Dauer der Berechnung per HTTPS zur CaptainDNS-API und wird danach verworfen. Keine Datenbank, kein Log mit dem Passwort im Klartext.


F: Sind Umlaute oder Sonderzeichen erlaubt?

A: Ja, die Berechnung läuft über die UTF-8-Bytes des Passworts. Ein Vorbehalt: Ein alter HTTP-Client kann Nicht-ASCII-Zeichen abweichend kodieren, was die Anmeldung scheitern ließe. Im Zweifel bleiben Sie bei ASCII.


F: Wohin gehört die .htpasswd-Datei?

A: Außerhalb des Web-Roots, zum Beispiel nach /var/www/secrets/. Liegt sie in einem über HTTP ausgelieferten Verzeichnis, könnte ein Besucher sie herunterladen und die Hashes offline angreifen.


Ergänzende Werkzeuge

WerkzeugNutzen
PasswortgeneratorEin starkes Passwort ziehen, bevor Sie es hashen
Hash-GeneratorMD5, SHA-1, SHA-256 und SHA-512 eines Textes berechnen
Base64-EncoderDen Authorization-Header einer Basic-Anfrage kodieren
HTTP-Header-AnalyseDie Header eines geschützten Bereichs prüfen
HSTS-TestSicherstellen, dass der geschützte Zugang über HTTPS läuft

Nützliche Ressourcen


Datenschutzversprechen

Ihr Passwort wird ausschließlich zur Berechnung des Hashs an die CaptainDNS-API übertragen, über eine verschlüsselte Verbindung. Es wird weder gespeichert noch protokolliert. Erhalten bleiben nur anonyme technische Kennzahlen (Verarbeitungsdauer, Antwortcode).