一:實驗背景;
1、爲了實現安全的登陸機制,使用基於basic的認證登陸;
2、認證方式有兩種:基於basic明文的認證(以後配合https可以實現加密認證);digest消息摘要認證,此認證兼容性差,目前基本上都不使用了;
3、虛擬賬號:僅用於訪問某特定服務時的認證標識;
4、虛擬賬號可以存放在文本文件中,也可以放在比較安全非SQL數據庫中,,,,,,,;
5、生成虛擬用戶工具:htpasswd;來自httpd-tools包,(使用前可以先檢查一下包是否安裝);
格式:htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
選項:
-c:自動創建文件,僅應該在文件不存在時使用 ------》若創建多個賬號,第一次創建時加上-c,以後就不需要加了
-m: md5格式加密 -----》默認的加密方式
-s: sha格式加密
-D:刪除指定用戶
二:實驗步驟;
一:基於用戶的basic認證;
1、建一個secrettest測試文件;
[root@Centos6 /app]# mkdir secrettest
[root@Centos6 /app]# echo "hello,weclome to my secret base" > secrettest/index.html
2、、定義配置文件;
[root@Centos6 /app]# vim /etc/httpd/conf.d/test.conf #在子配置文件中定義
<directory /app/secrettest>
authname "Secret DIR" #彈框提示符(用火狐瀏覽器可以看到)
authtype basic #驗證類型 basic
authuserfile /etc/httpd/conf.d/.httpusers #指明虛擬用戶的存放路徑,一般爲了安全,可以放在一個隱藏文件中
require user http1 http3 #在/etc/httpd/conf.d/.httpusers定義的用戶中允許通過驗證的用戶;允許所有用戶Require valid-user
</directory>
3、使用特定命令生成虛擬用戶;
[root@Centos6 /app]# htpasswd -c /etc/httpd/conf.d/.httpusers http1 #創建第一個用戶,文件還沒有生成,所以需要加上-c指定生成文件
New password: #回車後要在此處輸入密碼;
Re-type new password: #重複輸入上面的密碼;
Adding password for user http1
[root@Centos6 /app]# htpasswd -s /etc/httpd/conf.d/.httpusers http2 #創建第二個用戶,不需要-c選項;-s是用sha加密方式
New password:
Re-type new password:
Adding password for user http2
[root@Centos6 /app]# htpasswd -m /etc/httpd/conf.d/.httpusers http3 #創建第三個用戶,-m使用md5加密方式,其實默認的就是md5加密
New password:
Re-type new password:
Adding password for user http3
[root@Centos6 /app]# cat /etc/httpd/conf.d/.httpusers #查看一下虛擬用戶是否創建成功
http1:8GqhwrSVFG4eM
http2:{SHA}AAXfhrY/nwrcGaafjs69saZnPt4=
http3:$apr1$YzZRNDmP$HXYxM.HfSpVX0ENS9Z/S/0
[root@Centos6 /app]#
[root@Centos6 /app]# service httpd restart #重啓服務
二:基於組的basic認證;
[root@Centos6 /app]# vim /etc/httpd/conf.d/test.conf
<directory /var/www/html/secrettest>
authname "Secret DIR"
authtype basic
authuserfile /etc/httpd/conf.d/.httpusers
authgroupfile /etc/httpd/conf.d/.httgroups #在之前的基礎上,加上了關於組存放的文件路徑(此文件需要自己手工創建)
require group httpgroup1 #這裏改成允許訪問的組
</directory>
2、定義組存放的文件;[root@Centos6 /app]# vim /etc/httpd/conf.d/.httpgroups
httpgroup1:http1 http2
httpgroup2:http1 http3
[root@Centos6 /app]# service httpd restart #重啓服務
三:實驗測試;
一:基於用戶的測試;
二:基於組的測試;
步驟同基於用戶的測試;只不過區別是定義在組httpgroup1中的http1和http2用戶可以密碼登錄訪問;四:實驗總結;
1、要有修改配置文件的操作,建議在其子配置文件中定義,儘量不要動主配置文件;
2、切記,只要是修改了配置文件,就一定要重啓httpd服務使其生效;