Inicio › Herramientas para desarrolladores › Generador de htpasswd

Generador de htpasswd

Crea líneas usuario:contraseña para un archivo .htpasswd y protege un sitio web o una carpeta con autenticación básica HTTP en Apache o Nginx. Elige bcrypt, APR1-MD5 o SHA-1, añade tantos usuarios como quieras y copia la configuración del servidor ya lista. Las contraseñas se cifran con hash en tu navegador.

Última actualización:

Formato de hash

htpasswd -B usa 5 por defecto. Se comprueba cada solicitud autenticada, así que 8–10 es un buen equilibrio.

Publicidad
Publicidad

Cómo usar Generador de htpasswd

  1. Introduce un nombre de usuario y una contraseña, o pulsa el botón del dado para generar una contraseña aleatoria segura. Usa Añadir usuario para más cuentas.
  2. Elige el formato de hash. bcrypt es el más seguro para Apache 2.4; APR1-MD5 funciona en todas partes, incluidas todas las versiones de Nginx.
  3. Pulsa Generar .htpasswd y copia las líneas o descarga el archivo.
  4. Sube el archivo fuera de la raíz web, por ejemplo a /etc/apache2/.htpasswd, y añade el fragmento de Apache o Nginx que aparece bajo el resultado.
  5. Usa la pestaña Verificar para comprobar si una contraseña coincide con una línea htpasswd existente.

Comparación de formatos de hash de htpasswd

FormatoEjemploOpción de htpasswdApacheNginxSeguridad
bcrypt$2y$10$… (60 caracteres)-B -C 102.4+Si el crypt() del sistema lo admiteFuerte: con sal, coste ajustable
APR1-MD5$apr1$salt$…-m (predeterminado)TodosTodas las versionesModerada: con sal, 1,000 rondas de MD5
SHA-1{SHA}…=-sTodosTodas las versionesDébil: un solo SHA-1 sin sal
crypt (DES)13 caracteres-dSolo UnixSíInseguro: solo cuentan los primeros 8 caracteres
Texto planouser:password-pSolo Windows/NetWareNoNinguna

Configurar la autenticación básica

Apache

  1. Guarda el archivo generado, por ejemplo como /etc/apache2/.htpasswd, y restringe su acceso: sudo chown root:www-data /etc/apache2/.htpasswd && sudo chmod 640 /etc/apache2/.htpasswd.
  2. Añade el fragmento de Apache al archivo .htaccess de la carpeta o a un bloque <Directory> o <Location>. Usar .htaccess requiere AllowOverride AuthConfig (o All) para ese directorio.
  3. Recarga Apache si editaste la configuración principal: sudo systemctl reload apache2.

Nginx

  1. Guarda el archivo como /etc/nginx/.htpasswd e indica la ruta en el cuadro de arriba.
  2. Añade auth_basic y auth_basic_user_file al bloque server o location que quieras proteger.
  3. Prueba y recarga: sudo nginx -t && sudo systemctl reload nginx.

Para añadir o cambiar un usuario más adelante, genera aquí la nueva línea y sustitúyela o añádela al archivo. Cada nombre de usuario debe aparecer una sola vez.

Equivalentes en la línea de comandos

  • Crear un archivo con un usuario bcrypt: htpasswd -cB -C 10 /etc/apache2/.htpasswd admin
  • Añadir un usuario APR1 a un archivo existente: htpasswd -m /etc/apache2/.htpasswd bob
  • Mostrar una línea sin archivo: htpasswd -nbB admin 'secret'
  • Sin las herramientas de Apache: openssl passwd -apr1 'secret' muestra un hash APR1; antepón username:.

Preguntas frecuentes

¿Qué es un archivo .htpasswd?

Es un archivo de texto plano que usa Apache (y también Nginx y otros servidores) para la autenticación básica HTTP. Cada línea tiene el formato usuario:hash, donde el hash es una codificación unidireccional de la contraseña. Cuando un visitante inicia sesión, el servidor aplica el hash a la contraseña que escribe y lo compara con el hash guardado.

¿Qué algoritmo de hash debo elegir?

Usa bcrypt para Apache 2.4 y sistemas Nginx modernos: lleva sal y es deliberadamente lento. APR1-MD5 es el predeterminado de Apache y lo admiten de forma nativa todas las versiones de Nginx, así que elígelo si fallan los inicios de sesión con bcrypt. SHA-1 no lleva sal y es solo para software antiguo. No se ofrecen entradas en texto plano ni crypt() DES porque son inseguras.

¿Qué coste de bcrypt debo usar para la autenticación básica?

Los navegadores envían las credenciales con cada solicitud y el servidor comprueba el hash cada vez salvo que guarde el resultado en caché, así que un coste alto ralentiza cada página y recurso. htpasswd -B de Apache usa coste 5 por defecto; un coste de 8 a 10 es un equilibrio razonable para la mayoría de sitios. Auméntalo si pocas solicitudes están autenticadas.

¿El archivo generado es igual que el del comando htpasswd?

Sí. El resultado coincide con htpasswd -nbB (bcrypt), htpasswd -nbm (APR1-MD5) y htpasswd -nbs (SHA-1). Como bcrypt y APR1 usan una sal aleatoria, el hash cambia cada vez, pero todos se verifican correctamente.

¿La autenticación básica cifra la contraseña?

No. La autenticación básica HTTP solo codifica en Base64 el usuario y la contraseña en cada solicitud. Sirve siempre las zonas protegidas con contraseña a través de HTTPS para que las credenciales viajen cifradas.

¿Dónde debo guardar el archivo .htpasswd?

Fuera de la raíz web pública, por ejemplo en /etc/apache2/.htpasswd o /etc/nginx/.htpasswd, con lectura solo para el usuario del servidor web (chmod 640 con el grupo www-data). Si debe estar dentro de la raíz web, Apache bloquea por defecto los archivos que empiezan por .ht; Nginx necesita una regla explícita.

¿Es seguro generar las contraseñas aquí?

El hash se calcula completamente en tu navegador con JavaScript y la API WebCrypto, y no se envía nada a ningún servidor ni se guarda. Puedes comprobarlo usando la página sin conexión.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Generadores de código →