Generador de .htpasswd

Genera archivos .htpasswd para autenticación básica de Apache y Nginx de forma segura en el navegador. Compatible con bcrypt, APR1-MD5 y SHA-1. Las contraseñas nunca se envían al servidor.

¿Qué es un archivo .htpasswd?

Un archivo .htpasswd es un archivo de texto plano que almacena pares de nombre de usuario y contraseña con hash, uno por línea, en el formato usuario:hash. Es la pieza central de la autenticación básica (Basic Authentication) de Apache y Nginx: cuando alguien intenta acceder a una ruta protegida, el servidor comprueba las credenciales enviadas contra las líneas de este archivo antes de permitir el acceso. Tradicionalmente se genera con el comando htpasswd incluido en Apache, ejecutado directamente en el servidor mediante SSH.

Sin embargo, no todos los entornos ofrecen un acceso cómodo a la línea de comandos o al propio servidor: hosting compartido, paneles de control restringidos o simplemente la falta de permisos administrativos son situaciones habituales. Por eso resulta útil una herramienta que genere el mismo formato directamente desde el navegador. Esta herramienta calcula el hash de la contraseña introducida usando bcrypt, APR1-MD5 o SHA-1, y produce la línea usuario:hash lista para usar. Todo el cálculo se realiza en JavaScript dentro de tu propio navegador: la contraseña en texto plano nunca viaja por la red ni llega a ningún servidor externo. El archivo resultante debe guardarse fuera del DocumentRoot del servidor y referenciarse mediante la directiva AuthUserFile en la configuración de Apache o Nginx.

Cómo generar un archivo .htpasswd

  1. Añade una fila de usuario Pulsa el botón "Añadir usuario" una vez por cada cuenta que necesites crear. Cada fila de la tabla representa exactamente un usuario y su contraseña.
  2. Introduce el usuario y la contraseña En cada fila, escribe el nombre de usuario y la contraseña correspondiente. Puedes alternar entre mostrar y ocultar la contraseña para comprobar que la has escrito correctamente antes de generar el archivo.
  3. Elige el algoritmo y el coste Selecciona bcrypt, APR1-MD5 o SHA-1 para cada fila según tus necesidades de compatibilidad. Si eliges bcrypt, puedes ajustar el valor de coste (el exponente que determina cuántas iteraciones se calculan).
  4. Genera el archivo Al pulsar "Generar", el cálculo del hash se ejecuta de inmediato en tu navegador. Justo debajo aparece una vista previa con el contenido completo del archivo .htpasswd resultante.
  5. Copia o descarga el resultado Copia el contenido al portapapeles o descárgalo como archivo listo para subir a tu servidor y colocarlo en la ruta indicada por AuthUserFile.

Consejos para aprovecharla mejor

  • Usa bcrypt: El algoritmo más seguro disponible. Funciona con Apache 2.4+ y Nginx. Valores de coste más altos ralentizan el hash y aumentan la resistencia a ataques de fuerza bruta (10 es el valor habitual).
  • APR1-MD5 ($apr1$) es para compatibilidad con Apache 2.2 o anterior, y funciona con prácticamente todas las versiones de Apache y Nginx.
  • SHA-1 ({SHA}) tiene baja resistencia a colisiones y no se recomienda. Úsalo únicamente en entornos heredados que lo requieran.
  • Coloca el archivo .htpasswd fuera del DocumentRoot para que no sea accesible directamente desde la web.
  • Usa siempre HTTPS. Las credenciales de autenticación básica solo están codificadas en Base64, no cifradas, y viajan en texto plano sobre HTTP.

Casos de uso

Proteger un entorno de staging antes del lanzamiento

Antes de publicar un sitio, es habitual querer ocultarlo de buscadores y de terceros no autorizados. Añadir Basic Auth con un par usuario/contraseña es la forma más rápida de levantar esa barrera sin desarrollar nada.

Restringir paneles internos sin sistema de login propio

Muchas herramientas de administración, dashboards de monitorización o interfaces internas se despliegan sin una pantalla de inicio de sesión propia. Basic Auth añade una capa mínima de control de acceso en minutos.

Añadir una segunda capa de defensa junto a la restricción por IP

Cuando el acceso debe permitirse también desde redes externas y una lista blanca de IPs por sí sola no es suficiente, combinar Basic Auth con las reglas de firewall existentes refuerza la seguridad en profundidad.

Proteger únicamente determinados endpoints de una API

Usando directivas location en Nginx o Directory en Apache, puedes aplicar la autenticación básica solo a las rutas sensibles de tu API, dejando el resto del sitio de acceso público sin restricciones.

Añadir nuevos usuarios a un servicio ya en producción

Si el servicio ya está funcionando, no hace falta regenerar todo el archivo: basta con generar únicamente las líneas correspondientes a los usuarios nuevos y añadirlas al final del .htpasswd existente.

Glosario

Autenticación básica (Basic Authentication)
Método de autenticación estándar de HTTP en el que el nombre de usuario y la contraseña se codifican en Base64 y se envían en cada petición mediante la cabecera Authorization. El servidor los verifica antes de conceder acceso al recurso solicitado.
bcrypt
Algoritmo de hash de contraseñas que incorpora una sal (salt) aleatoria y un factor de coste ajustable. Al aumentar el coste, el cálculo se vuelve más lento de forma controlada, lo que mantiene su resistencia frente a ataques de fuerza bruta incluso cuando el hardware mejora. Es el algoritmo recomendado actualmente.
APR1-MD5
Formato de hash propio de Apache basado en MD5, cuyo resultado siempre comienza con $apr1$. Se mantiene principalmente por compatibilidad con instalaciones antiguas de Apache que no soportan bcrypt.
SHA-1 ({SHA})
Formato de hash cuyo resultado comienza con {SHA}. No incorpora sal y su resistencia a colisiones se considera débil según los estándares actuales, por lo que no se recomienda para nuevas implementaciones.
Sal (salt)
Cadena aleatoria que se añade a la contraseña antes de calcular su hash. Gracias a ella, dos usuarios con la misma contraseña obtienen hashes distintos, lo que neutraliza los ataques basados en tablas precalculadas (rainbow tables).
DocumentRoot
Directorio que un servidor web expone públicamente como raíz de los archivos servidos. El archivo .htpasswd debe guardarse fuera de esta carpeta; de lo contrario, podría descargarse directamente escribiendo su URL en el navegador.
AuthUserFile
Directiva de configuración de Apache que indica la ruta absoluta del archivo .htpasswd que debe usarse para verificar las credenciales de la autenticación básica en una ruta protegida.

Preguntas frecuentes

Añade lo siguiente a tu .htaccess o httpd.conf, apuntando AuthUserFile al archivo .htpasswd generado:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Añade las directivas a tu nginx.conf o al bloque server correspondiente:
location /admin {
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
}
Nginx es compatible con bcrypt y APR1-MD5.

Se recomienda bcrypt para cualquier instalación con Apache 2.4+ o Nginx. Usa APR1-MD5 solo si necesitas compatibilidad con Apache 2.2 o anterior. Evita SHA-1 salvo que un sistema heredado lo exija.

Simplemente añade la línea generada (usuario:hash) al final del archivo existente. Cada línea representa un usuario. Las líneas vacías y las que comienzan con # se ignoran.

Sí. Todo el proceso de hash ocurre en tu navegador mediante JavaScript. Ningún dato de contraseña se transmite al servidor. Usa siempre esta herramienta en una página HTTPS segura y guarda el archivo generado con cuidado.
Tool-kun

A propósito — Por qué Basic Auth sigue vigente pese a su antigüedad

La autenticación básica HTTP fue definida en 1999 por la RFC 2617 (actualizada posteriormente a la RFC 7617). El mecanismo es sencillo: concatenar usuario y contraseña con :, codificar en Base64 y enviar en el encabezado Authorization.

Su simplicidad explica por qué sigue siendo muy utilizada: es ideal para entornos de staging, herramientas internas o como primera línea de defensa combinada con listas blancas de IP. Dos o tres líneas de configuración son suficientes, sin necesidad de middleware adicional ni base de datos.

Sus limitaciones también son reales: no hay mecanismo de cierre de sesión (la sesión persiste hasta cerrar el navegador), ni gestión de caducidad de contraseñas ni autenticación multifactor de serie. Para servicios de producción con requisitos de seguridad reales, considera OAuth 2.0 u OIDC.