今天的世界是不安全的。我们必须提供不同类型的安全措施,如身份验证。在Apache或Nginx等HTTP服务器中,我们可以使用HTTP基本身份验证。HTTP基本身份验证是Web服务器提供的身份验证协议。我们可以使用htpasswd工具创建HTTP基本身份验证数据库和用户。顺便说一下,使用应用程序级身份验证是一个更好的解决方案。
安装htpasswd工具
htpasswd
由Apache Utils包为Ubuntu、Debian、Mint和Kali提供。我们可以用以下命令安装它。
$ sudo apt install apache2-utils
为Fedora、CentOS、RHEL安装Htpasswd工具
作为基于RPM的发行版,如Fedora、CentOS和RHEL将Apache命名为 httpd
我们可以安装 htpasswd
使用以下命令。
$ sudo yum install httpd-tools
创建Htpasswd数据库和用户
我们将使用 -c
选项并提供数据库文件名、用户和密码等相关信息。在本例中,我们将创建一个名为 .htpasswd
用户名 ismail
和密码。
$ htpasswd -c .htpasswd ismail
![图片[1]-如何为Apache生成和配置Htpasswd?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/08/poftut_image-139.png)
列出htpasswd用户
我们可以通过cat命令列出提供数据库文件的现有用户。因为我们名为.htpasswd的文件只是一个文本文件,其中密码以加密格式存储。数据库文件名为 db
位于执行htpasswd命令的当前目录下。
$ cat .htpasswd

我们可以看到db文件的内容,其中有两列用 :
. 第一列包含用户名,在本例中为ismail、ahmet、ali,第二列以加密版本存储密码。
相关文章: 如何用Cracklib检查Linux中的密码强度?
更改现有用户密码
我们可以更改现有的用户密码,我们只需要再次提供用户名,就像从头开始创建一样。这会问我们 user
再次输入密码。在本例中,我们将更改 ismail
.
$ htpasswd db ismail

从中我们可以看出,我们已经成功地更新了 ismail
.
从htpasswd文件中删除用户
如果我们想阻止用户访问,我们应该从数据库中删除用户。我们将使用-D选项并指定要删除的用户名。在本例中,我们将删除名为 ali
.
$ htpasswd -D .htpasswd ali

为Apache配置身份验证
到目前为止,我们已经学会了如何管理用户数据库。在本部分中,我们将研究如何配置Apache进行基本身份验证。以下配置将放入apachemain conf或虚拟主机之类的站点配置中。
ServerAdmin [email protected] DocumentRoot /var/www/html AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user
- 在这个配置中,我们假设我们的数据库文件
db
位于/etc/apache2/db
- 此身份验证将应用于目录
/var/www/html
为了进行配置,我们应该在保存配置后重新启动Apache2服务器。
检查HTTP基本身份验证
如果我们试图浏览网页,我们会得到如下提示,这是要求 username
和 password
这些将从我们的 db
文件。
