htpasswd-generator — bcrypt, Apache MD5 (apr1) & Basic Auth
Genereer htpasswd-vermeldingen met bcrypt, Apache MD5 (apr1), SHA-1 en meer. Krijg direct kopieerbare Apache-, nginx- en Docker-configuratie. 100% in je browser — niets wordt geüpload.
Bestaande hash verifiëren
Wat is een htpasswd-bestand?
Een .htpasswd-bestand slaat de referenties op die worden gebruikt door HTTP Basic Authentication. Elke regel is een enkel gebruikersnaam:hash-paar, waarbij de hash een eenrichtingsdigest van het wachtwoord is — de leesbare tekst wordt nooit opgeslagen. Webservers lezen dit bestand om te bepalen wie toegang heeft tot een beschermde URL. Bij Apache verwijst een .htaccess-bestand (of een <Directory>-blok) naar het .htpasswd-bestand en vraagt de browser om een gebruikersnaam en wachtwoord voordat de pagina wordt weergegeven.
Het hash-formaat hangt af van het gebruikte algoritme. Apache's htpasswd-tool kan er meerdere genereren: bcrypt (regels die beginnen met $2y$) is het sterkst en wordt aanbevolen voor Apache, Docker Registry en Caddy; apr1 (Apache MD5, beginnend met $apr1$) is het meest overdraagbaar en de veilige standaard voor nginx; SHA-1 (beginnend met {SHA}) is niet gezouten en wordt als onveilig beschouwd; crypt (traditionele DES) is verouderd en knipt wachtwoorden af na 8 tekens; en plain slaat het wachtwoord op als leesbare tekst, wat nooit in productie mag worden gebruikt.
Deze generator werkt volledig in je browser — geen gebruikersnaam, wachtwoord of hash wordt ooit geüpload. Als je een sterk wachtwoord nodig hebt voor je vermelding, gebruik dan onze Willekeurig wachtwoord-generator. Om de Authorization: Basic-header handmatig samen te stellen, is de referentie gewoon base64(user:password), die je kunt maken met onze Base64-encoder. En zodra je eindpunt beveiligd is, test je het vanaf de opdrachtregel met onze 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.
Belangrijkste functies
Meerdere hash-algoritmen
Genereer bcrypt ($2y$)-, apr1/Apache MD5 ($apr1$)- en SHA-1 ({SHA})-vermeldingen — plus een plain-optie (leesbare tekst) voor testdoeleinden. Elk formaat dat dit ondersteunt, gebruikt een nieuw cryptografisch salt.
Genereren én verifiëren
Maak nieuwe vermeldingen aan of verifieer bestaande. Plak een opgeslagen user:hash-regel en een kandidaatwachtwoord om direct te controleren of ze overeenkomen — handig bij het debuggen van een 401 in productie.
Kies per server
Selecteer Apache, nginx, Docker of Caddy en het juiste algoritme wordt automatisch gekozen — bcrypt waar ondersteund, apr1 voor nginx-portabiliteit — zodat je stille crypt()-fouten vermijdt.
Direct kopieerbare configuratieblokken
Ontvang zes kant-en-klare configuratiefragmenten — Apache .htaccess, nginx auth_basic, Docker, Kubernetes ingress-nginx, Caddy en Traefik — al gekoppeld aan je gegenereerde .htpasswd-vermelding.
100% client-side
Alle hashing vindt lokaal in je browser plaats via Web Crypto en een meegeleverde bcrypt-implementatie. Geen gebruikersnaam, wachtwoord of hash wordt ooit naar een server verzonden, zodat je productiesleutelgegevens privé kunt genereren.
Voorbeelden
bcrypt-vermelding (aanbevolen)
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Een bcrypt-vermelding met een $2y$-prefix en cost 10. Dit is het sterkste en meest overdraagbare formaat — gebruik het voor Apache, Docker Registry, Caddy en Traefik.
apr1-vermelding (portabele nginx)
admin:$apr1$kl3H9j2.$qN8vY7tLp2mZ0xW5cR4fK1
Apache MD5 (apr1) met een salt van 8 tekens na de $apr1$-markering. De veilige standaard voor nginx, waarbij bcrypt-verificatie afhankelijk is van een onbetrouwbare systeem-crypt().
SHA-1-vermelding (verouderd)
admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= Een {SHA}-vermelding is de base64 van een ongezouten SHA-1-digest. Apache en nginx accepteren het, maar het is ongezouten en onveilig — alleen opgenomen voor achterwaartse compatibiliteit.
Authorization: Basic-header
Authorization: Basic YWRtaW46czNjcmV0
De client-side referentie voor dezelfde gebruiker: base64('admin:s3cret'). Stuur deze header met curl -H of Postman om te authenticeren zonder een .htpasswd-bestand te schrijven.
Meerdere gebruikers in één .htpasswd-bestand
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy alice:$2y$10$3bQ8xY7tLp2mZ0xW5cR4fO9vK1jH6sD2nG8aQ5wE3rT7uI4oP1cm bob:$apr1$mZ0xW5cR$4fK1jH6sD2nG8aQ5wE3rT2
Één gebruikersnaam:hash-regel per gebruiker. Algoritmen mogen in hetzelfde bestand worden gemengd — hier bestaan twee bcrypt-vermeldingen en één apr1-vermelding samen voor drie gebruikers.
Hoe te gebruiken
- 1
Server en algoritme configureren
Kies je doelserver (Apache, nginx, Docker, Caddy). Het juiste algoritme wordt automatisch geselecteerd — bcrypt voor Apache/Docker/Caddy, apr1 voor portabele nginx — maar je kunt het overschrijven en de bcrypt-cost aanpassen.
- 2
De hash genereren
Vul een gebruikersnaam en wachtwoord in (of klik op Willekeurig wachtwoord) en klik daarna op Genereren. De hash wordt lokaal berekend met een nieuw willekeurig salt. Genereer het salt opnieuw om een nieuwe vermelding aan te maken.
- 3
De vermelding kopiëren
Kopieer de user:hash-regel voor je .htpasswd-bestand, kopieer het echo >>-commando voor de shell, of kopieer de Authorization: Basic-header voor curl en Postman.
- 4
De configuratie uitrollen
Plak het gegenereerde configuratieblok in je Apache .htaccess, nginx-serverblok, Docker-, Kubernetes-ingress-, Caddy- of Traefik-configuratie, verwijs naar je .htpasswd-bestand en herlaad de server.
Veelgebruikte toepassingen
- Apache-mapbeveiliging
- Vergrendel een map met HTTP Basic Auth via een .htaccess-bestand en een AuthUserFile-instructie. Voeg de bcrypt-vermelding en het gegenereerde Apache-configuratieblok toe om een login te vereisen voor elk pad.
- nginx auth_basic
- Beveilig een location- of serverblok met auth_basic en auth_basic_user_file. Gebruik het apr1-formaat zodat verificatie betrouwbaar werkt op Alpine, Debian en andere basisimages.
- Docker Registry
- Een privé Docker Registry accepteert alleen bcrypt-htpasswd-vermeldingen. Genereer een $2y$-regel met htpasswd -Bbn, koppel deze aan de registrycontainer en authenticeer je docker login.
- Kubernetes ingress-nginx
- Maak een basic-auth-Secret aan op basis van je .htpasswd-bestand en verwijs ernaar met de nginx.ingress.kubernetes.io/auth-type- en auth-secret-annotaties om een ingress-route te beveiligen.
- Caddy & Traefik
- De basic_auth-instructie van Caddy en de basicauth-middleware van Traefik verwachten beide bcrypt-hashes. Plak de gegenereerde vermelding direct in je Caddyfile of Traefik-labels/dynamische configuratie.
- curl & Postman Authorization-header
- Sla het bestand over voor snelle tests: kopieer de Authorization: Basic-header om referenties direct te verzenden. Voeg hem toe als curl -H-vlag of als Postman-verzoek om een beveiligd eindpunt te bereiken.
Technische details
- bcrypt ($2y$)
- Een adaptieve, gezouten hash op basis van het Blowfish-cijfer met een instelbare kostenfactor. Elke vermelding bevat een willekeurig 16-byte salt en de cost, zodat identieke wachtwoorden verschillende hashes produceren. Let op: bcrypt knipt het wachtwoord af na 72 bytes — tekens daarna worden genegeerd.
- apr1 (Apache MD5)
- Apache's iteratieve, gezouten MD5-variant ($apr1$ + salt van 8 tekens). Het voert 1.000 MD5-rondes uit, wat veel zwakker is dan de adaptieve cost van bcrypt, maar het is native geïmplementeerd door Apache en nginx, waardoor het het meest overdraagbare formaat is op alle platforms en basisimages.
- SHA-1 en crypt
- SHA-1-vermeldingen ({SHA} + base64-digest) zijn ongezouten, waardoor identieke wachtwoorden identieke hashes opleveren en ze kwetsbaar zijn voor rainbow tables — alleen opgenomen voor achterwaartse compatibiliteit. Traditioneel crypt (DES) is nog zwakker en knipt wachtwoorden stilzwijgend af na 8 tekens.
- Salt en iteraties
- Salting voorkomt voorberekende (rainbow-table-)aanvallen door elke hash uniek te maken. bcrypt gebruikt een willekeurig 128-bit salt met een instelbare cost; apr1 gebruikt een salt van 8 tekens met 1.000 vaste iteraties. Gebruik Salt opnieuw genereren om een andere geldige hash te maken voor hetzelfde wachtwoord.
- Base64 en UTF-8-afhandeling
- Wachtwoorden worden gecodeerd als UTF-8-bytes vóór het hashen, zodat niet-ASCII-tekens consistent worden verwerkt. De Authorization: Basic-header is de base64 van de onbewerkte UTF-8-bytes van gebruikersnaam:wachtwoord, overeenkomstig wat servers decoderen aan de ontvangende kant.
- Eerlijkheidsnotities en voorbehouden
- Gegenereerde hashes worden lokaal berekend en nooit geverifieerd tegen een live server. Gekopieerde vermeldingen en gedownloade .htpasswd-bestanden komen op je klembord en schijf terecht in de vorm van leesbare hash-tekst — behandel ze als geheimen, beperk de bestandsrechten en leeg je klembord na het plakken in productiéconfiguratie.
Aanbevolen werkwijzen
- Geef de voorkeur aan bcrypt waar ondersteund
- Gebruik bcrypt ($2y$) voor Apache, Docker, Caddy en Traefik — het is gezouten, adaptief en veel sterker dan apr1 of SHA-1. Reserveer apr1 alleen voor nginx wanneer de afhankelijkheid van bcrypt op de systeem-crypt() het onbetrouwbaar maakt.
- Sla het bestand op buiten de webroot
- Bewaar .htpasswd buiten elke weergegeven map zodat het nooit via HTTP kan worden gedownload. Stel chmod 640 in en maak de webservergebruiker eigenaar, zodat de server het kan lezen maar andere accounts niet.
- Serveer altijd via HTTPS
- Basic Auth verzendt referenties als reversibele base64 bij elk verzoek. Zonder TLS kan iedereen op het netwerkpad het wachtwoord lezen. Schakel Basic Auth nooit in op gewoon HTTP — beëindig TLS vóór het beveiligde eindpunt.
- Gebruik unieke, sterke wachtwoorden
- Elk account moet zijn eigen wachtwoord met hoge entropie hebben, nooit hergebruikt voor andere diensten. Genereer er een met onze Willekeurig wachtwoord-generator en sla het op in een wachtwoordbeheerder in plaats van het zelf te bedenken.
Veelgestelde vragen
bcrypt vs apr1 — welke moet ik kiezen?
Ondersteunt nginx bcrypt?
Hoe los ik de nginx-fout `crypt_r() failed (22: Invalid argument)` op?
Waar moet ik het .htpasswd-bestand opslaan en welke rechten gebruik ik?
Hoe configureer ik Basic Auth in .htaccess of nginx?
Worden mijn wachtwoorden ergens geüpload?
Wat is het verschil tussen $2a$, $2b$ en $2y$ bij bcrypt?
Welke bcrypt-cost moet ik gebruiken?
htpasswd vs de Authorization: Basic-header — wat is het verschil?
Ik heb apache2-utils niet geïnstalleerd — hoe genereer ik een htpasswd-vermelding?
Wat betekenen de htpasswd-vlaggen -B, -Bbn en -bnB?
Waarom vereist Docker Registry bcrypt?
Is Basic Auth veilig?
Gerelateerde tools
Alle tools bekijken →cURL-commando generator en builder
Web & API
Bouw curl-commando's in je browser — stel methode, headers, auth en body in en krijg direct een kopieerbaar commando. Presets voor Bearer, POST JSON en bestandsupload. Gratis, privé, geen registratie.
Talstelsel omrekenen — online converter
Omrekentools
Reken je getal direct om tussen binair, hex, decimaal, octaal en elk talstelsel (2-36). Gratis en privé — alles draait in je browser.
Base64 decoderen en encoderen online
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
Case converter — UPPERCASE, lowercase, camelCase & meer
Tekstverwerking
Zet tekst direct om tussen UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE en 6 andere formaten. Gratis, alleen in de browser, geen account nodig.
Color converter — HEX, RGB, HSL & OKLCH
Omrekentools
Converteer HEX naar RGB, HSL, OKLCH, OKLAB en CMYK in je browser — kopieer elk formaat met één klik. Gratis, geen account, je kleuren verlaten de pagina nooit.
Crontab generator & cron-uitdrukking bouwen
Datum en tijd
Bouw, valideer en ontleed cron-uitdrukkingen in je browser. Live preview van de volgende run in lokale tijd of UTC. POSIX 5-veld syntaxis, presets, uitleg in begrijpelijk Nederlands. Gratis, privé, geen account nodig.