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
- 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.
- 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.
- 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).
- 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.
-
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
DocumentRootpara 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
.htaccess o httpd.conf, apuntando AuthUserFile al archivo .htpasswd generado:AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd Require valid-user
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.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.
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.