Generador htpasswd — bcrypt, Apache MD5 (apr1) y Basic Auth
Genera entradas htpasswd con bcrypt, Apache MD5 (apr1), SHA-1 y más. Obtén configuración lista para pegar en Apache, nginx y Docker. 100% en tu navegador — sin subidas.
Verificar un hash existente
¿Qué es un archivo htpasswd?
Un archivo .htpasswd almacena las credenciales que usa la autenticación HTTP Basic. Cada línea es un par usuario:hash, donde el hash es un resumen unidireccional de la contraseña — el texto en claro nunca se guarda. Los servidores web leen este archivo para decidir quién puede acceder a una URL protegida. En Apache, un archivo .htaccess (o un bloque <Directory>) referencia el archivo .htpasswd y solicita al navegador usuario y contraseña antes de servir la página.
El formato del hash depende del algoritmo que lo generó. La herramienta htpasswd de Apache puede emitir varios: bcrypt (líneas que comienzan con $2y$) es el más sólido y se recomienda para Apache, Docker Registry y Caddy; apr1 (Apache MD5, que comienza con $apr1$) es el más portátil y el valor predeterminado seguro para nginx; SHA-1 (que comienza con {SHA}) no usa sal y se considera inseguro; crypt (DES tradicional) es heredado y trunca las contraseñas a 8 caracteres; y plain almacena la contraseña en texto claro, algo que nunca debe usarse en producción.
Este generador se ejecuta íntegramente en tu navegador — ningún nombre de usuario, contraseña ni hash se sube en ningún momento. Si necesitas una contraseña sólida para tu entrada, usa nuestro Generador de Contraseñas Aleatorias. Para construir manualmente la cabecera Authorization: Basic, la credencial es simplemente base64(usuario:contraseña), que puedes generar con nuestro Codificador Base64. Y una vez que tu endpoint esté protegido, pruébalo desde la línea de comandos con nuestro Constructor de comandos cURL.
# 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.
Características clave
Múltiples algoritmos de hash
Genera entradas bcrypt ($2y$), apr1 / Apache MD5 ($apr1$) y SHA-1 ({SHA}), además de una opción plain (texto claro) para pruebas. Cada una usa una sal criptográfica nueva cuando el formato lo admite.
Generar y verificar
Crea nuevas entradas o verifica las existentes. Pega una línea usuario:hash almacenada y una contraseña candidata para confirmar al instante si coinciden — útil para depurar un 401 en producción.
Elegir por servidor
Selecciona Apache, nginx, Docker o Caddy y el algoritmo correcto se elige automáticamente — bcrypt donde está soportado, apr1 para portabilidad en nginx — para evitar fallos silenciosos de crypt().
Bloques de configuración listos para pegar
Obtén seis fragmentos de configuración listos para copiar — Apache .htaccess, nginx auth_basic, Docker, Kubernetes ingress-nginx, Caddy y Traefik — ya vinculados a tu entrada .htpasswd generada.
100% del lado del cliente
Todo el hashing ocurre localmente en tu navegador mediante Web Crypto y una implementación bcrypt incluida. Ningún nombre de usuario, contraseña ni hash se envía jamás a un servidor, por lo que puedes generar credenciales de producción de forma privada.
Ejemplos
Entrada bcrypt (recomendada)
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Una entrada bcrypt con prefijo $2y$ y coste 10. Es el formato más robusto y portátil — úsalo para Apache, Docker Registry, Caddy y Traefik.
Entrada apr1 (nginx portátil)
admin:$apr1$kl3H9j2.$qN8vY7tLp2mZ0xW5cR4fK1
Apache MD5 (apr1) con una sal de 8 caracteres tras el marcador $apr1$. El valor predeterminado seguro para nginx, donde la verificación bcrypt depende de un crypt() del sistema poco fiable.
Entrada SHA-1 (heredada)
admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= Una entrada {SHA} es el base64 de un resumen SHA-1 sin sal. Apache y nginx la aceptan, pero no tiene sal y es insegura — se incluye solo por compatibilidad con sistemas heredados.
Cabecera Authorization: Basic
Authorization: Basic YWRtaW46czNjcmV0
La credencial del lado del cliente para el mismo usuario: base64('admin:s3cret'). Envía esta cabecera con curl -H o Postman para autenticarte sin necesitar un archivo .htpasswd.
Archivo .htpasswd con múltiples usuarios
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy alice:$2y$10$3bQ8xY7tLp2mZ0xW5cR4fO9vK1jH6sD2nG8aQ5wE3rT7uI4oP1cm bob:$apr1$mZ0xW5cR$4fK1jH6sD2nG8aQ5wE3rT2
Una línea usuario:hash por usuario. Los algoritmos pueden mezclarse en el mismo archivo — aquí conviven dos entradas bcrypt y una apr1 para tres usuarios.
Cómo usar
- 1
Configurar servidor y algoritmo
Elige tu servidor de destino (Apache, nginx, Docker, Caddy). El algoritmo correcto se selecciona automáticamente — bcrypt para Apache/Docker/Caddy, apr1 para nginx portátil — aunque puedes cambiarlo y ajustar el coste de bcrypt.
- 2
Generar el hash
Introduce un nombre de usuario y contraseña (o haz clic en Contraseña aleatoria) y luego haz clic en Generar. El hash se calcula localmente con una sal aleatoria nueva. Regenera la sal en cualquier momento para crear una nueva entrada.
- 3
Copiar la entrada
Copia la línea usuario:hash para tu archivo .htpasswd, copia el comando echo >> para la terminal, o copia la cabecera Authorization: Basic para curl y Postman.
- 4
Desplegar la configuración
Pega el bloque de configuración generado en tu .htaccess de Apache, bloque de servidor nginx, Docker, Kubernetes ingress, Caddy o configuración de Traefik, apúntalo a tu archivo .htpasswd y recarga el servidor.
Casos de uso habituales
- Protección de directorios en Apache
- Bloquea una carpeta con HTTP Basic Auth usando un archivo .htaccess y una directiva AuthUserFile. Añade la entrada bcrypt y el bloque de configuración Apache generado para requerir inicio de sesión en cualquier ruta.
- auth_basic en nginx
- Protege un bloque location o server con auth_basic y auth_basic_user_file. Usa el formato apr1 para que la verificación funcione de forma fiable en Alpine, Debian y otras imágenes base.
- Docker Registry
- Un Docker Registry privado solo acepta entradas htpasswd en formato bcrypt. Genera una línea $2y$ con htpasswd -Bbn, monta el archivo en el contenedor del registro y autentica tu docker login.
- Kubernetes ingress-nginx
- Crea un Secret de basic-auth a partir de tu archivo .htpasswd y referéncialo con las anotaciones nginx.ingress.kubernetes.io/auth-type y auth-secret para proteger una ruta ingress.
- Caddy y Traefik
- La directiva basic_auth de Caddy y el middleware basicauth de Traefik esperan hashes bcrypt. Pega la entrada generada directamente en tu Caddyfile o en las etiquetas/configuración dinámica de Traefik.
- Cabecera Authorization con curl y Postman
- Omite el archivo por completo en pruebas rápidas: copia la cabecera Authorization: Basic para enviar credenciales directamente. Úsala con la opción -H de curl o en una solicitud de Postman para acceder a un endpoint protegido.
Detalles técnicos
- bcrypt ($2y$)
- Un hash adaptativo y con sal basado en el cifrado Blowfish con un factor de coste ajustable. Cada entrada incorpora una sal aleatoria de 16 bytes y el coste, por lo que contraseñas idénticas producen hashes distintos. Nota: bcrypt trunca la contraseña a 72 bytes — los caracteres más allá de ese límite se ignoran.
- apr1 (Apache MD5)
- La variante MD5 iterada y con sal de Apache ($apr1$ + sal de 8 caracteres). Ejecuta 1.000 rondas de MD5, lo que es mucho más débil que el coste adaptativo de bcrypt, pero está implementada de forma nativa en Apache y nginx, lo que la convierte en el formato más portátil entre plataformas e imágenes base.
- SHA-1 y crypt
- Las entradas SHA-1 ({SHA} + resumen en base64) no tienen sal, por lo que contraseñas idénticas producen hashes idénticos y son vulnerables a tablas arcoíris — se incluyen solo por compatibilidad heredada. El crypt tradicional (DES) es aún más débil y trunca silenciosamente las contraseñas a 8 caracteres.
- Sal e iteraciones
- La sal previene los ataques precomputados (tablas arcoíris) al hacer único cada hash. bcrypt usa una sal aleatoria de 128 bits con un coste configurable; apr1 usa una sal de 8 caracteres con 1.000 iteraciones fijas. Usa Regenerar sal para obtener un hash válido diferente para la misma contraseña.
- Manejo de Base64 y UTF-8
- Las contraseñas se codifican como bytes UTF-8 antes del hashing, por lo que los caracteres no ASCII se manejan de forma coherente. La cabecera Authorization: Basic es el base64 de los bytes UTF-8 en crudo de usuario:contraseña, lo que coincide con lo que los servidores decodifican en el extremo receptor.
- Notas de transparencia y advertencias
- Los hashes generados se calculan localmente y nunca se verifican contra un servidor en vivo. Las entradas copiadas y los archivos .htpasswd descargados llegan a tu portapapeles y disco en forma de hash de texto — trátalos como secretos, restringe los permisos del archivo y borra el portapapeles tras pegarlo en una configuración de producción.
Buenas prácticas
- Prefiere bcrypt siempre que esté soportado
- Usa bcrypt ($2y$) para Apache, Docker, Caddy y Traefik — tiene sal, es adaptativo y mucho más robusto que apr1 o SHA-1. Reserva apr1 solo para nginx cuando la dependencia de bcrypt en el crypt() del sistema lo haga poco fiable.
- Guarda el archivo fuera de la raíz web
- Mantén .htpasswd fuera de cualquier directorio servido para que nunca pueda descargarse por HTTP. Establece chmod 640 y asígnalo al usuario del servidor web para que el servidor pueda leerlo mientras otras cuentas no puedan.
- Usa siempre HTTPS
- Basic Auth transmite las credenciales como base64 reversible en cada solicitud. Sin TLS, cualquiera en la ruta de red puede leer la contraseña. Nunca actives Basic Auth en HTTP plano — termina TLS delante del endpoint protegido.
- Usa contraseñas únicas y sólidas
- Cada cuenta debe tener su propia contraseña de alta entropía, nunca reutilizada en otros servicios. Genera una con nuestro Generador de Contraseñas Aleatorias y guárdala en un gestor de contraseñas en lugar de inventarla manualmente.
Preguntas frecuentes
bcrypt vs apr1 — ¿cuál debo elegir?
¿Admite nginx bcrypt?
¿Cómo soluciono el error de nginx `crypt_r() failed (22: Invalid argument)`?
¿Dónde debo guardar el archivo .htpasswd y con qué permisos?
¿Cómo configuro Basic Auth en .htaccess / nginx?
¿Se suben mis contraseñas a algún servidor?
¿Cuál es la diferencia entre $2a$, $2b$ y $2y$ en bcrypt?
¿Qué coste de bcrypt debo usar?
htpasswd vs la cabecera Authorization: Basic — ¿cuál es la diferencia?
No tengo apache2-utils instalado — ¿cómo genero una entrada htpasswd?
¿Qué significan las opciones -B, -Bbn y -bnB de htpasswd?
¿Por qué Docker Registry requiere bcrypt?
¿Es segura la autenticación Basic Auth?
Herramientas relacionadas
Ver todas las herramientas →Generador y constructor de comandos cURL
Web & API
Construye comandos curl en tu navegador: define método, cabeceras, autenticación y cuerpo, y obtén el comando listo para copiar al instante. Presets para Bearer, POST JSON y subida de archivos. Gratis, privado, sin registro.
Conversor de Bases — Binario, Hex, Decimal, Octal
Herramientas de Conversión
Convierte números entre binario, hexadecimal, decimal, octal y cualquier base personalizada (2-36) al instante. Gratis, privado, sin registro — todo el procesamiento ocurre en tu navegador.
Decodificador y Codificador Base64
Codificación y Formato
Decodifica y codifica Base64 online de forma gratuita. Conversión en tiempo real con soporte completo de UTF-8 y emojis. 100% privado — funciona en tu navegador. Sin registro.
Convertidor de Mayúsculas, Minúsculas, camelCase y Más
Procesamiento de Texto
Convierte texto entre UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE y 6 formatos más al instante. Gratis, en el navegador, sin registro.
Convertidor de Color — HEX, RGB, HSL y OKLCH
Herramientas de Conversión
Convierta HEX a RGB, HSL, OKLCH, OKLAB y CMYK en su navegador — copie cualquier formato con un clic. Gratis, sin registro, sus colores nunca salen de la página.
Generador Crontab y Constructor de Expresiones Cron
Fecha y Hora
Construye, valida y decodifica expresiones cron en el navegador. Vista previa de próximas ejecuciones en hora local o UTC. POSIX 5 campos, presets y descripción natural. Gratis y privado.