apache用戶認證

1.apache用戶認證

當用戶訪問某些頁面的時候,可以設置用戶密碼的路後顯示內容。但是爲了更進一步提升安全性,可以將頁面本身加密,讓部分制定用戶輸入賬號密碼後才顯示頁面本身的內容。

在虛擬主機配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf中已經配置好了一臺主機名爲111.com的虛擬主機。在瀏覽器中輸入該主機名可以得到如下頁面:

1.PNG

①將虛擬主機配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置如下:

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
    <Directory /data/wwwroot/111.com>
        AllowOverride AuthConfig
        AuthName "111.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    </Directory>
</VirtualHost>

說明:

<Directory /data/wwwroot/www.123.com>  ⇒ 指定認證的目錄

        AllowOverride AuthConfig  ⇒ 這個相當於打開認證的開關

        AuthName "123.com user auth"  ⇒ 自定義認證的名

        AuthType Basic  ⇒ 認證的類型,一般爲Basic

        AuthUserFile /data/.htpasswd   ⇒ 指定密碼文件所在位置

        require valid-user  ⇒ 指定需要認證的用戶爲全部可用用戶

</Directory>

②創建認證用戶

-c:創建,只有第一次創建文件的時候需要加上該選項

-m:以MD5方式對密碼加密

[root@test_01 ~]# /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd wennan
New password:
Re-type new password:
Adding password for user wennan
[root@test_01 ~]# cat /data/.htpasswd
wennan:$apr1$GxAVVmNA$fb12xm6BUmPR4N1Ro2S2O/

③檢查配置文件,重新啓動服務

[root@test_01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@test_01 ~]# /usr/local/apache2.4/bin/apachectl graceful

④測試

使用curl測試,得到401的錯誤代碼,表示需要經過用戶認證。

[root@test_01 ~]# curl -x127.0.0.1:80 111.com -I
HTTP/1.1 401 Unauthorized
Date: Thu, 21 Dec 2017 12:02:16 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
WWW-Authenticate: Basic realm="111.com user auth"
Content-Type: text/html; charset=iso-8859-1

使用curl命令的-u選項輸入用戶密碼則得到了200的反饋代碼。

[root@test_01 ~]# curl -x192.168.231.128:80 -uwennan:P@ssw0rd 111.com -I
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 12:43:25 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8

2.對個別文件進行加密

除了針對整個頁面內容進行加密之外,也可以針對某些關聯的文件進行加密。

①將虛擬主機配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置如下,只針對123.php文件進行加密

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
    #<Directory /data/wwwroot/111.com>
    #    AllowOverride AuthConfig
    #    AuthName "111.com user auth"
    #    AuthType Basic
    #    AuthUserFile /data/.htpasswd
    #    require valid-user
    #</Directory>
    <FilesMatch 123.php>
         AllowOverride AuthConfig
         AuthName "111.com user auth"
         AuthType Basic
         AuthUserFile /data/.htpasswd
         require valid-user
    </FilesMatch>

</VirtualHost>

②測試

[root@test_01 ~]# curl -x127.0.0.1:80 111.com/123.php -I
HTTP/1.1 401 Unauthorized
Date: Thu, 21 Dec 2017 12:53:21 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
WWW-Authenticate: Basic realm="111.com user auth"
Content-Type: text/html; charset=iso-8859-1

[root@test_01 ~]# curl -x192.168.231.128:80 -uwennan:P@ssw0rd 111.com/123.php -I
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 12:53:36 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8

[root@test_01 ~]# curl -x192.168.231.128:80 -uwennan:P@ssw0rd 111.com/123.php
123.php authorization passed



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章