1.apache用戶認證
當用戶訪問某些頁面的時候,可以設置用戶密碼的路後顯示內容。但是爲了更進一步提升安全性,可以將頁面本身加密,讓部分制定用戶輸入賬號密碼後才顯示頁面本身的內容。
在虛擬主機配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf中已經配置好了一臺主機名爲111.com的虛擬主機。在瀏覽器中輸入該主機名可以得到如下頁面:
①將虛擬主機配置文件/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