Configurar alguna forma de autenticación de contraseñas para un sitio web puede ser una parte crucial para compartir contenido con usuarios autorizados. En otro artículo discutimos cómo hacer exactamente eso usando algunas reglas ingeniosas de .htaccess. Si quieres leer más sobre cómo se hace esto, puedes consultar nuestro artículo, que cubre cómo proteger con contraseña los archivos o directorios con .htaccess. Sin embargo, puede que se pregunte ¿cómo se validan estas credenciales y dónde se almacenan? La respuesta es con el archivo .htpasswd, que será el foco de este artículo.
¿Qué es .htpasswd?
Un archivo .htpasswd se utiliza normalmente cuando se protege un archivo, una carpeta o un sitio web completo con una contraseña utilizando la autenticación HTTP y se implementa utilizando reglas dentro de un archivo .htaccess. Las credenciales de los usuarios se almacenan en líneas separadas, y cada línea contiene un nombre de usuario y una contraseña separados por dos puntos (:). Los nombres de usuario se almacenan en texto plano, mientras que las contraseñas se almacenan en un formato cifrado de hash. Este cifrado suele ser MD5, aunque en Linux puede basarse en la función crypt(). Aunque es posible nombrar el fichero de contraseñas como se quiera, no se aconseja, ya que Apache está preconfigurado para usar .htpasswd por defecto, y los ficheros de puntos (ficheros que empiezan por «.») suelen ser ficheros ocultos.
¿Cómo crear un archivo .htpasswd?
Dependiendo de su plataforma, esto se puede lograr de diferentes maneras. El método más fácil es dirigirse a uno de los diversos sitios web de creación de .htpasswd y seguir sus sencillas instrucciones para generar las entradas necesarias para un archivo .htpasswd. Yo recomendaría el generador ofrecido por htaccesstools.com, ya que es muy sencillo y directo: Htpasswd Generator. Si eres como yo y quieres ver cómo se hace esto sin usar un generador, ¡quédate por aquí!
Primero necesitarás tener un nombre de usuario en mente, para este ejemplo he elegido el nombre de usuario bob123. A continuación, tendrá que iniciar sesión en su servidor a través de SSH, si usted no está seguro de cómo acceder a su servidor a través de SSH por favor revise el siguiente artículo: Conectándose a su servidor vía SSH. Por último, ejecute el siguiente comando, tenga en cuenta que si ejecuta esto como un usuario no root tendrá que utilizar sudo.
htpasswd -c /home/usernamehere/.htpasswd bob123
Se le pedirá que proporcione y confirme una contraseña para este usuario. Si desea agregar usuarios adicionales puede hacerlo a través de lo siguiente:
htpasswd /home/usernamehere/.htpasswd newUser2
Si revisara el contenido del archivo .htpasswd debería ver algo similar a lo siguiente.
bob123:$apr1$FaPCZHMe$jYiw5.9UevKx25pBH4AsT/newUser2:$apr1$mrCHcVhc$oNdJeRcWKPk2z8dlzQI0x/