一、訪問控制

1、要想實現用戶訪問控制,首先改動下面的這項爲all,即允許用戶訪問控制:

 

身份驗證的的原理是在服務器端有一個用戶的文件,記錄了一些允許訪問的用戶,如果不在這個文件內的用戶無法訪問。

2、首先在要保護的網站的主目錄裏面建立一個說明文件,這個文件時一個隱含文件,名字是固定的必須是".htaccess",這個文件的額目的是說明如何對來訪者的身份進行驗證的:

在這個文件裏面要編輯上一下主要的語句:

authuserfile /var/www/.usrfile //記錄用戶文件的名字和路徑,注意此時這個文件還不存在

authtype    basic         //身份驗證的方式,這裏是基本驗證方式

authname  "please input your name and passwors" //用於提示用戶的對話框

require  valid-user         //規定只有有效的賬戶纔可以登錄

3、下面就要產生.usrfile文件

  這個文件時通過指令htpasswd產生的,注意有個-c參數,這個就達到新建這個文件:

       

     

到在此添加用戶的時候,就不再需要-c參數了:

    

這時候查看.usrfile,可以看到兩個文件已經被添加成功:

重新啓動httpd服務,在windows裏面測驗:

當輸入賬號和密碼的時候可以順利訪問。

二、來源控制(基於ip的訪問控制)

  當數據包來的時候,可以看到源ip地址,就是基於源ip地址的控制,可以控制單個ip、可以控制一個子網或者是某個ip段。

<Directory "主目錄">

  Order allow,deny  //要注意orderdeny的順序

    Allow from all

</Directory>

只需將拒絕的地址和允許的地址寫在裏面即可,可以通過查看日誌看到:

三、加密訪問 https

1、 Ssl的工作原理:

注意第四步的時候,客戶機用服務器的公鑰加密時,私鑰也放在了裏面,這樣服務器就可以得到私鑰,進行解密。

如何實現這個過程呢?用linux自帶的openca來實現。

首先進入一個目錄編輯一個文件:

進入到tls目錄中去,有一個openssl.cnf文件,編輯這個文件,主要要編輯的內容如下:

[ CA_default ]

 44 

 45 dir             = /../../CA      //這裏要改爲:/etc/pki,          

 46 certs           = $dir/certs       //已經發行的證書放的位置,$dird相當於/etc/pki/CA     

 47 crl_dir         = $dir/crl          //吊銷列表    

 48 database        = $dir/index.txt     //數據庫

 51 new_certs_dir   = $dir/newcerts    

 53 certificate     = $dir/cacert.pem     //證書存放地,指的是發證機關的證書

 54 serial          = $dir/serial        //初始號碼

 58 private_key     = $dir/private/cakey.pem  //私鑰放置的位置,

注意上面的目錄crl certs newcerts和文件index.txt serial要自己創建:

serial一個初始值:

用這指令生成一個密鑰:

Gen表示生成密鑰,rsa指的是非對稱算法,1024指的是位數,注意存放位置與上面對應。

修改文件的屬性:

 

密鑰已經產生了,下面又密鑰來產生證書,用下面的固定指令:

 

 

注意上面的證書的存放的位置是有上面的決定的,下面會出現如下,讓輸入如下的信息:

可以修改這些參數的默認值,在ssl.conf文件中進行修改:

還有一個很重要的參數,將下面的8890改成如圖的這樣,否則這個CA將只允許本國的本省的本單位的申請證書:

綜上,CA就建立好了,共有三大步:一、編輯/etc/pki/tls/openssl.cnf   改動一個路徑,新建三個目錄兩個文件。二、通過指令openssl gensra 1024 >/private/cakey.pem得到一個密鑰,58行。三、通過這個密鑰得到證書,指令是openssl req -new - key private/cakey.pem -x509 -out cacert.pem -days 3650.  注意第二三步後面的目錄是由openssl中決定的。

現在CA有了,相當於有了發證的機構,web向這個CA申請證書,但是申請證書必須要有密鑰,在web服務器共有三步。一:獲得密鑰。二:申請證書。三:獲得證書。

1、建立一個總目錄,將下面要新建的一些文件都放在裏面,便於管理:

 

 

2、通過指令openssl gensra 1024 獲得密鑰,並且重定向到文件http.key,名字這是自己起的並且自動生成

 

看一下權限:

 

爲安全改動權限:

 

3、由密鑰來請求證書,用下面的指令,http.csr是一個請求文件自命名:

然後輸入系列下列的參數,請求完成:

4、最後由這個請求來獲得證書[[email protected] cert]# openssl ca -in http.csr -out http.cert

可以講整個cert目錄的權限改成600,以保證安全!

5、web端要支持ssl,必須安裝支持ssl的包:

 

6.安裝完成上面的包後,會在下面Apache的配置文件下發現多了一個ssl.conf文件:

 

7.vim ssl.conf

由此可見sslhttp是模塊結合的,並且端口是443.

可見ssl有自己的日誌系統,進入與無法進入可以由這兩個日誌來看。

最重要的是這個文件必須指明證書和密鑰的位置,通過下面這兩個位置:

這兩項看上面的24目錄。

下面在一個進行windows2003中訪問:

我的web服務器地址192.168.93.10,在windows2003中的ie進行訪問:https://192.168.93.10

得到如下的結果:

如果點擊是可以進行強制訪問,這時候所產生的一切後果自己負責。爲什麼會這樣呢?因爲該證書不是可信任的機構的頒發的,怎樣才能成爲可信任的頒發機構:通過mms控制檯或IE瀏覽器可以查看可以信任的站點:

讓一個機構成爲可信任的機構:

首先要在這個路徑中顯示機構的名稱:進入到lls.conf文件中編輯如下一行:

 

 

其中後面的路徑就是CA機構的證書,重新啓動Apache,得到如下:

進行安裝:

安裝之後,再次訪問:

因爲訪問的時候是通過192.168.93.10訪問的,如果通過www.zhuzhu.com來訪問就不會有這樣的問題了,但是必須有dns可以解析www.zhuzhu.com192.168.93.10的關係,這裏做一個小實驗,利用本地hosts文件來看一下:進入CWINDOWS>system32>drivers>etc>hosts;

hosts文件裏將www.zhuzhu.com 192.168.93.10寫上去,然後通過https://www.zhuzhu.com來訪問,結果如何呢?上面的信息提示都不會有直接可以進入頁面中去。

如何只允許密文訪問?只需要關閉80端口:

編輯/etc/httpd/conf/httpd.conf

這樣明文就訪問不到了!