在Apache配置Basic認證之後,用htpasswd命令建立使用者。
htpasswd建立和更新儲存使用者名稱、密碼的文字檔, 用於對HTTP使用者的basic認證。
# /usr/local/apache/bin/htpasswd --help
htpasswd參數
-c 建立passwdfile.如果passwdfile 已經存在,那麼它會重新寫入並刪去原有內容.
-n 不更新passwordfile,直接顯示密碼
-m 使用MD5加密(預設)
-d 使用CRYPT加密(預設)
-p 使用普通文字格式設定的密碼
-s 使用SHA加密
-b 命令列中一併輸入使用者名稱和密碼而不是根據提示輸入密碼,可以看見明文,不需要互動
-D 刪除指定的使用者
訪問/var/www/html目錄時會出現Basic認證的頁面,需要輸入使用者名稱及密碼。
代碼如下 |
複製代碼 |
<Directory /var/www/html> AuthUserFile /etc/httpd/conf.d/.zabbix.cc AuthGroupFile /dev/null AuthName "Please Input Your Account Name and Password" AuthType Basic Require valid-user </Directory> |
初次建立的時候使用
代碼如下 |
複製代碼 |
# htpasswd -c /etc/httpd/conf.d/.zabbix.cc <UserName> 追加使用者 # htpasswd /etc/httpd/conf.d/.zabbix.cc <UserName> |
密碼的文字數,不要超過8個字。
因為預設是使用雜湊函數CRYPT(預設選項-d),CRYPT會無視超過8個字的文字。
如要利用超過8個字以上的密碼,使用-m選項(雜湊函數MD5)。
使用-p選項的話,在寫入檔案時不會進行HASH。
下面進入正題,如何使用.htaccess和.htpasswd來給目錄加上身分識別驗證;
建立“.htpasswd”檔案,格式為“使用者名稱:密碼”:【註:window下可能無法直接建立,可以用過文本建立並寫入下面代碼後,通過另存新檔”.htpasswd”,注意需要帶雙引號的。】
ccp330:123456
建立“.htaccess”檔案,格式如下,相關指令可以自己網上去搜尋瞭解:
AuthUserFile .htpasswd檔案絕對路徑
代碼如下 |
複製代碼 |
AuthType Basic AuthName “restricted” Order Deny,Allow Deny from all Require valid-user Satisfy any 例如: AuthUserFile G:/php_work/.htpasswd AuthType Basic AuthName “restricted” Order Deny,Allow Deny from all Require valid-user Satisfy any |
第三步是把建立的“.htpasswd”和“.htaccess”放到要保護的目錄下,現在訪問保護的目錄下的檔案即可看見如下效果:
其次還有兩點說明:
第一點是“.htpasswd”檔案可以放在隨意位置,而“.htaccess”則必須放在要保護的目錄並填寫好.htpasswd的絕對路徑,也就是說密碼檔案“.htpasswd”可以放在web目錄之外;
第二點是“.htpasswd”檔案裡的密碼是可以加密的,具體加密方法如下