http站點的安全性
1.1. http簡介:
HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫。它的發展是萬維網協會(World Wide Web Consortium)[5] 和Internet工作小組IETF(Internet Engineering Task Force)[6] 合作的結果,(他們)最終發佈了一系列的RFC,RFC 1945[7] 定義了HTTP/1.0版本。其中最著名的就是RFC 2616[8] 。RFC 2616定義了今天普遍使用的一個版本——HTTP 1.1。爲紀念Tim Berners-Lee提出HTTP後對互聯網發展的貢獻,萬維網協會保留有他最原始提交的版本[9] 。
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可以使瀏覽器更加高效,使網絡傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等[10] 。
HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型。HTTP是一個無狀態的協議。
HTTP協議的主要特點可概括如下:
1、支持客戶/服務器模式。支持基本認證[11] 和安全認證(見後文《安全協議》)。
2、 簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
3、靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4、HTTP 0.9和1.0使用非持續連接:限制每次連接只處理一個請求,服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
HTTP 1.1使用持續連接:不必爲每個web對象創建一個新的連接,一個連接可以傳送多個對象。
5、無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。
另一方面,在服務器不需要先前信息時它的應答就較快。
實現http站點的安全性主要有一下幾個方面
1.身份驗證 2.來源控制 3.加密訪問
1.2. 網絡拓撲:
1.3. 實驗環境
HTTP server平臺: Os centos 6.4 版本號2.6.32-431.el6.i686
32位操作系統
軟件包 httpd-2.2.15-29.el6.centos.i686.rpm
openssl-1.0.1e-15.el6.i686.rpm
mod_ssl-2.2.15-29.el6.centos.i686.rpm
案例一:
對httpd的默認站點實現身份驗證
安裝好httpd後,編輯httpd的配置文件/etc/httpd/conf/httpd.conf
找到httpd的默認站點目錄<Directory "/var/www/html"> 將
AllowOverride None 改爲 AllowOverride all
在/var/www/html/創建 一個.htaccess 的說明文件,說明文件包含一下內容:
autheuserfile
authname
authtype
required
來到/var/www目錄下使用htpasswd 創建賬號庫.htpasswd並創建一個用戶:
xiaoming 密碼:123
進入/var/www/html/目錄下建立一個小頁面
重啓httpd服務後打開一臺客戶機測試一下:
可以看到需要進行驗證才能夠訪問,輸入賬號:xiaoming 密碼:123 後成功看到了 welcome!!!
1.3.1. 案例二:
對httpd的默認站點進行來源控制
編輯httpd的配置文件/etc/httpd/conf/httpd.conf
找到httpd的默認站點目錄<Directory "/var/www/html"> 在訪問控制規則
寫入只允許來源爲192.168.2.50的主機訪問
用一個地址爲192.168.2.60的主機來訪問服務器
直接跳出了測試頁面訪問不成功
使用地址爲192.168.2.50的主機來訪問
出現了welcome!!訪問成功
1.3.2. 案例三:
加密訪問
https加密訪問示意圖:
證書頒發機構CA 的實現 windows 中 安裝證書服務
linux 中 openca
openssl
我們使用openssl來實現CA的功能:
編輯openssl的配置文件/etc/pki/tls/openssl.cnf
更改CA 的policy選項,把countryName、stateOrProvinceName、localityName
都改爲可選擇(optional)
根據自己的需要更改CA policy的默認選項
來到openssl的配置文件/etc/pki/tls/openssl.cnf 中的[ CA_default ]條目下看是否有這些默認文件如果沒有創建這些文件用於建立CA的服務和產生CA自己的證書
在/etc/pki/CA/目錄下創建一個index.txt的索引文件用於記錄CA所頒發的證書
[root@vbird CA]# touch index.txt
創建一個serial文件用於記錄當前序列號並給它一個初始值01
[root@vbird CA]# touch serial
[root@vbird CA]# echo "01" >serial
使用openssl genrsa產生一個rsa加密算法的CA自己的私鑰,並輸入到/private/cakey.pem中
[root@vbird CA]# openssl genrsa >private/cakey.pem
爲了安全性更改cakey.pem權限
[root@vbird CA]# chmod 600 private/cakey.pem
使用cakey.pem來創建CA的公鑰cacert.pem
爲web服務器頒發證書:
創建一個目錄用於存放httpd的私鑰
[root@vbird ~]# mkdir /etc/httpd/certs/private
生成httpd的私鑰
更改權限
[root@vbird private]# chmod 600 httpdkey.pem
使用httpd的私鑰來申請httpd的請求文件httpdcert.pem
用httpd的請求文件httpdcert.pem向CA申請證書 httpd.cart
[root@vbird certs]# openssl ca -in httpdcert.pem -out httpd.cert
編輯/etc/httpd/conf.d/ssl.conf文件把httpd服務器和證書捆綁
重啓httpd服務
打開一臺測試機輸入https://192.168.2.100
可以看到出現了證書選項
點擊“查看證書”選擇“證書路徑”後安裝證書,將rootca.org添加爲受信任的根證書頒發機構
再次打開瀏覽器後訪問成功!