一、訪問控制
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 //要注意order與deny的順序
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文件中進行修改:
還有一個很重要的參數,將下面的88—90改成如圖的這樣,否則這個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:
由此可見ssl與http是模塊結合的,並且端口是443.
可見ssl有自己的日誌系統,進入與無法進入可以由這兩個日誌來看。
最重要的是這個文件必須指明證書和密鑰的位置,通過下面這兩個位置:
這兩項看上面的2和4目錄。
下面在一個進行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.com和192.168.93.10的關係,這裏做一個小實驗,利用本地hosts文件來看一下:進入C盤WINDOWS>system32>drivers>etc>hosts;
在hosts文件裏將www.zhuzhu.com 192.168.93.10寫上去,然後通過https://www.zhuzhu.com來訪問,結果如何呢?上面的信息提示都不會有直接可以進入頁面中去。
如何只允許密文訪問?只需要關閉80端口:
編輯/etc/httpd/conf/httpd.conf
這樣明文就訪問不到了!