一、apache實現身份認證
apache的身份認證分兩種,一種是基本認證(basic),另一種是摘要認證(digest)。要實現身份認證那就必須要有帳號和密碼,帳號密碼可以保存在普通文件中也可以保存在數據庫中。
實例:使用httpd2.2實現基本身份認證。
1、創建一個保密頁面,此處我們使用服務器的狀態頁面,這個頁面是httpd自身生成的。apache內部有許多內生的處理器,一般來講每一種文件類型都有其隱式的處理器,使用參數SetHandler可以讓處理器顯示。編輯httpd的配置文件/etc/httpd/conf/httpd.conf,加上以下幾行。
<Location /status> SetHandler server-status Order deny,allow allow from all </Location>
重啓httpd後,打開瀏覽器在地址欄輸入,http://ServerIP/status就能看到apache的狀態了。
2、很顯然這麼重要的頁面,我們肯定不能讓除管理員以外的人看到了,於是我們可以使用身份認證讓這個頁面訪問需要密碼。編輯配置文件裏,剛纔加入的那幾行。
<Location /status> SetHandler server-status #顯示server-status Order deny,allow allow from all AllowOverride AuthConfig #開啓實現認證機制 AuthType Basic #定義認證機制類型爲基本身份認證 AuthName 'Apache Server Status' #定義對話框顯示的提示符 AuthUserFile '/etc/httpd/conf/.htpasswd' #帳號密碼保存路徑 Require valid-user #授權帳號文件裏的用戶訪問權限,此處爲所有,也可單獨定義某個或某多個用戶,用逗號隔開 </Location>
此處我們開啓了這個頁面的基本身份認證功能,並把帳號密碼保存在/etc/httpd/conf/.htpasswd文件裏。既然這個文件保存了帳號和密碼,那麼這個文件就很重要,在實際使用時請謹慎此文件的訪問權限,此處爲了方便我們把它製作成一個隱藏文件。
3、使用命令 htpasswd 創建用戶
格式:
htpasswd -c -m /path/passwordfile username
以上命令,如果是添加第二個用戶則不用加上-c參數:
4、重啓服務,測試效果。
輸入密碼測試一下:
二、apache實現https安全加密協議
在網上購物時,到了付款的那一步,通常都會跳轉到一個基於https協議的頁面。因爲https是一種基於http協議,在http下加上ssl層,而這個ssl層是在TCP/IP四層模型的應用層上,所有數據在經過這個通道時都會有一個臨時的加密算法加密,所以很安全。apache要實現https協議,須使用mod_ssl模塊,此模塊可以使用yum命令獨立安裝。
實例:本地實現https。
1、本地生成CA證書。進入目錄/etc/pki/CA,在該目錄創建CA的自簽證書。
(umask 077; openssl genrsa 2048 > private/cakey.pem)
2、爲了免於後面重複輸入CA的資料,我們編輯一下配置文件/etc/pki/tls/openssl.cnf,修改以下幾個默認參數。
3、生成CA的證書
openssl req -new -x509 -key private/cakey.pem -days 3655 -out cacert.pem
4、生成客戶端數字證書。此處因爲我們服務端和客戶端使用同一臺機器,因此直接在本機生成證書,免去證書上傳的步驟。
在目錄/etc/httpd/conf/下創建一個目錄ssl,在/etc/httpd/conf/ssl下生成客戶端私鑰:
(umask 077; openssl genrsa 1024 > httpd.key)
根據httpd.key私鑰生成證書。
openssl req -new -key httpd.key -out httpd.csr
5、CA籤曙客戶端證書。
openssl ca -in httpd.csr -out httpd.crt
6、安裝mod_ssl模塊,可以使用yum安裝,也直接使用rpm命令安裝軟件包:
7、編輯配置文件/etc/httpd/conf.d/ssl.conf。
從文件開頭我們可以看到,模塊已經加載,監聽的端口是443:
指定公鑰和私鑰路徑:
8、把CA的數字證書文件/etc/pki/CA/cacert.pem下載至本地windows電腦,並更名爲cacert.crt。
直接雙擊並安裝證書到受信任的證書頒發機構:
9、重啓服務,查看https的443端口號是否被監聽。
10、在網站根目錄創建一個測試用的首頁文件,並在本地window7系統的電腦裏C:\Windows\System32\drivers\etc\hosts添加服務器的IP地址並綁定域名www.wubinary.com。
在本地電腦的瀏覽器上輸入域名 https://www.wubinary.com,測試效果:
測試成功!
三、apache實現頁面壓縮
爲了加快網站頁面訪問速度,服務器端可以把網站頁面裏指定格式的內容進行壓縮傳送。但是有的時候客戶端瀏覽器可能不支持解壓縮的功能,於是我們可以把內容不壓縮返回給它,讓支持壓縮的瀏覽器訪問的內容爲壓縮內容。具體參數如下:
SetOutputFilter DEFLATE #開啓壓縮模塊 # Restrict compression to these MIME types 定義需要壓縮的文件類型 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css # Level of compression (Highest 9 - Lowest 1) 定義壓縮級別 DeflateCompressionLevel 9 # Netscape 4.x has some problems. 此類瀏覽器支持壓縮 BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems 此類不支持壓縮 BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
實例: apache實現頁頁壓縮
1、在目錄/etc/httpd/conf.d/下新建一個配置文件deflate.conf,添加以上內容
2、爲了測試效果,我們故意弄一個大文本文件作爲首頁,本地瀏覽器測試效果:
設置成功!