DEV Community

nabbisen
nabbisen

Posted on

OpenBSD httpd: Basic authentication with htpasswd

Summary

OpenBSD httpd supports basic authentication with htpasswd.
Here shows how to use it. Besides, the official documentation is here.

Tutorial

Assuming that:
the absolute path of our document root is /var/www/auth-trial.

Generate .htpasswd

First, generate .htpasswd:

$ doas htpasswd /var/www/auth-trial/.htpasswd <username>
Enter fullscreen mode Exit fullscreen mode

This command writes <username> (which is editable) and generated password for them, hashed by bcrypt, into .htpasswd file.
Now you can see:

$ doas cat /var/www/auth-trial/.htpasswd
<username>:(...)
Enter fullscreen mode Exit fullscreen mode

It is important to confirm the web user running httpd daemon can read it:

$ doas chown www: /var/www/auth-trial/.htpasswd
$ # the file generated above is writable by user
$ doas chmod u-w: /var/www/auth-trial/.htpasswd

$ ls -l /var/www/auth-trial/.htpasswd 
-r--------  1 www       wheel  69 Aug  2 15:20 /var/www/auth-trial/.htpasswd
Enter fullscreen mode Exit fullscreen mode

Configure httpd.conf

Edit httpd.conf:

$ doas nvim /etc/httpd.conf
Enter fullscreen mode Exit fullscreen mode

in order to define authenticate in server section:

  server "(...)" {
      (...)
+     authenticate with "/auth-trial/.htpasswd"
      root "/auth-trial"
      (...)
      location "(...)" {
          (...)
      }
      (...)
  }
Enter fullscreen mode Exit fullscreen mode

Restart the daemon:

$ doas rcctl restart httpd
httpd(ok)
httpd(ok)
Enter fullscreen mode Exit fullscreen mode

Done :)

Conclusion

Now you can see confirmation required:

confirmation

and access denied when the input is invalid:

unauthorized

Top comments (0)