httpd2.2實現身份認證、https及頁面壓縮

一、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的狀態了。

wKiom1MydNbAQMf_AAMSgPNSl1E779.jpg


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參數:

wKioL1Myd97BifPXAAExpAdmdV4870.jpg


4、重啓服務,測試效果。

wKioL1MyebbTtCU7AAI6F89xGVQ308.jpg


輸入密碼測試一下:

wKioL1MyegnTBVoJAAC1zMwtibM079.jpg

wKioL1MyegrSBETaAAIyFYDHOOo981.jpg


二、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)

wKioL1MyfbWytoSEAAEXQNBxk6Y400.jpg


2、爲了免於後面重複輸入CA的資料,我們編輯一下配置文件/etc/pki/tls/openssl.cnf,修改以下幾個默認參數。

wKioL1MyfyPzDQZxAAM8IVnaNao255.jpg


3、生成CA的證書

openssl req -new -x509 -key private/cakey.pem -days 3655 -out cacert.pem

wKiom1MygC2ggxInAAMhcvrGarI485.jpg


4、生成客戶端數字證書。此處因爲我們服務端和客戶端使用同一臺機器,因此直接在本機生成證書,免去證書上傳的步驟。

在目錄/etc/httpd/conf/下創建一個目錄ssl,在/etc/httpd/conf/ssl下生成客戶端私鑰:

(umask 077; openssl genrsa 1024 > httpd.key)

wKiom1MygSuzAeqeAADwuqZ61-g992.jpg


根據httpd.key私鑰生成證書。

openssl req -new -key httpd.key -out httpd.csr

wKiom1MygcixLrBxAAONEH_BFpE095.jpg


5、CA籤曙客戶端證書。

openssl ca -in httpd.csr -out httpd.crt

wKioL1Myh27R6xltAAM5DFRzJVU178.jpg


6、安裝mod_ssl模塊,可以使用yum安裝,也直接使用rpm命令安裝軟件包:

wKiom1MyhT2R7fs2AAFV8fmNz1U062.jpg


7、編輯配置文件/etc/httpd/conf.d/ssl.conf。


從文件開頭我們可以看到,模塊已經加載,監聽的端口是443:

wKioL1MyhVyz-wZmAABzY0p-RPQ273.jpg


指定公鑰和私鑰路徑:

wKiom1MyhlHBuCwKAAHuGSg-X38796.jpg


8、把CA的數字證書文件/etc/pki/CA/cacert.pem下載至本地windows電腦,並更名爲cacert.crt。

wKioL1MyiO6RfnkRAAAd6Skf3Qs593.jpg


直接雙擊並安裝證書到受信任的證書頒發機構:

wKiom1MyiWfjwkSdAAHnosekwiw576.jpg


9、重啓服務,查看https的443端口號是否被監聽。

wKiom1Myi4fBgSERAAJkfCkJ81A153.jpg


10、在網站根目錄創建一個測試用的首頁文件,並在本地window7系統的電腦裏C:\Windows\System32\drivers\etc\hosts添加服務器的IP地址並綁定域名www.wubinary.com。

在本地電腦的瀏覽器上輸入域名 https://www.wubinary.com,測試效果:

wKioL1MyjKShpFH-AADjbYP8WVI935.jpg


測試成功!


三、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,添加以上內容

wKioL1MykWST6E1wAAJ_Be1t6z8680.jpg


2、爲了測試效果,我們故意弄一個大文本文件作爲首頁,本地瀏覽器測試效果:

wKioL1MykZrQGIC5AAMoY-qSaTw649.jpg


設置成功!






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