超文本傳送協定(HyperText Transfer Protocol,HTML)是一種通信協定,它允許将超文本标記語言文檔從web伺服器傳送到wel浏覽器。
HTML的特點:
1.支援客戶/伺服器模式。
2.簡單快速:客戶向伺服器請求服務時,隻需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯系的類型不同。由于HTTP協定簡單使得HTTP伺服器的程式規模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的資料對象。正在傳輸的類型由Content-Type加以标記。4.無連接配接:無連接配接的含義是限制每次連接配接隻處理一個請求。伺服器處理完客戶的請求,并收到客戶的應答後,即斷開連接配接。采用這種方式可以節省傳輸時間。
5.無狀态:HTTP協定是無狀态協定。無狀态是指協定對于事務處理沒有記憶能力。 缺少狀态意味着如果後續處理需要前面的資訊,則它必須重傳,這樣可能導緻每次連接配接傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。
用戶端浏覽器以https的方式通路web伺服器的過程:
用戶端通過https方式通路伺服器全過程描述:
1.客戶機通過https通路web伺服器,web伺服器向客戶機出示自己的證書
2. 客戶機驗證證書的有效性,包括發證時間,發證機關,執行者辨別。
3.如果客戶機驗證證書通過,客戶機随機産生128位的key,再利用證書檔案傳遞的public key對該随即key機進行加密。
4.加密後傳送至伺服器端,伺服器再利用自己的public key 對加密的key進行解密,得到客戶機的随機key值。
5.這時兩端的key值相同,利用該key進行加密通訊
。linux下通過Apache httpd軟體實作https方式通路站點的實作:
1.由于案例最後要安裝mod_ssl軟體,而該軟體具有依賴性,是以先配置yum(本地yum)。建立挂載點,挂載CD光牒,編輯/etc/yum.repos.d/rhel-debuginfo.repo
有關yum的詳細配置請通路我的另一篇博文:http://jialiang10086.blog.51cto.com/4496483/960178
2.安裝WWW伺服器軟體,在這裡使用httpd-2.2.3-31.el5.i386.rpm,采用yum或者rpm安裝
rpm -ivh httpd-2.2.3-31.el5.i386.rpm
yum install httpd
實作Apache 站點安全有三種方式:
a. 身份驗證
b.來源控制
c.ssl安全套接字層
下面一一實作上述3種方式:
A.身份驗證
3.編輯/etc/httpd/conf/httpd.conf 檔案,修改第327行 :将AllowOverride None 改為AllowOverride all ;更改後才能使身份驗證配置生效
4.上步中修改 AllowOverride all 是在<Directory "/var/www/html"> </Directory>内,對應的是對通路/var/www/htm 目錄内的網頁時的主機進行身份驗證。
在/var/www/htm 中産生一個隐藏檔案.htaccess ,在此檔案中寫入驗證規則
5.産生上步中的 .password檔案,并建立賬戶user1 和 user2 。htpasswd [–c] .htpassword user1
6.切換到/var/www/html 産生網頁檔案,重新開機httpd服務
B.來源控制
通過控制允許哪些使用者可以通路站點,哪些不能通路站點來實作來源控制的目的
Order allow,deny
Allow from all
7.設定隻允許192.168.101.11主機通路該站點,設定完成後重新開機httpd服務
8.測試 ,ip為192.168.101.11主機可以通路該站點。
9.ip為192.168.101.12 主機無法通路該站點
C.安全套接字層ssl
搭建證書伺服器CA
10.編輯檔案/etc/pki/tls/openssl.cnf
将88行到90 行的match 改為optional ,否則将隻有和CA在同一個國家、省份、組織的主機才能從CA獲得證書
修改CA預設的名稱選項,當向該CA提出證書申請時顯示為預設。
11.根據openssl.cnf檔案的說明,需要建立三個目錄:certs newcerts crl 和兩個檔案:index.txt serial
12.CA 證書伺服器産生自己的私鑰cakey.pem 。 openssl genrsa 1024 > private/cakey.pem
13.CA伺服器根據自己的私鑰産生自己的證書:openssl req -new -key private/cakey.pem -x509 -out cacert.pem -days 3650
該處的預設值即為第19步中修改的預設值
14.×××檔案和私鑰檔案的權限為600
15.在WWW伺服器的根目錄/etc/httpd下建立檔案夾certs,用來存放伺服器的私鑰,請求,以及證書
16.www伺服器産生自己的私鑰:openssl genrsa 1024 > httpd.key
17 根據私鑰httpd.key 來産生請求檔案:openssl req -new -key httpd.key -out httpd.csr
18.CA伺服器根據請求檔案頒發證書:openssl ca -in httpd.csr -out httpd.cert
19.×××檔案和私鑰檔案的權限為600
現在www伺服器已經有自己的證書和私鑰了,當用戶端浏覽器通過https的方式通路該web伺服器,則該伺服器需要将證書顯示到用戶端浏覽器,這需要ssl和httpd相結合
20.安裝mod_ssl 子產品:yum install mod_ssl
21.安裝後,會在/etc/httpd/conf.d下産生檔案ssl.conf檔案
22編輯ssl.conf檔案
23.重新開機httpd服務
24.測試,顯示有兩個問題:一是頒發證書的機構不被信任,二是證書上顯示的名字和該主機通路的名字不一緻
25.如果想要信任某個證書頒發機構,隻需将該頒發機構的證書導入浏覽器,但是點選檢視證書,證書路徑中不顯示頒發機構的證書
26 繼續修改ssl.conf,×××鍊
27.重新開機httpd服務,再次進行測試
28.點選檢視證書,安裝證書
29安裝後可在浏覽器中檢視
30.再次差可能通路情況,顯示隻有名稱無效
31.修改hosts檔案,将192.168.101.250的對應的域名設定為www.zzu.edu.cn
32.最後一步,修改httpd.conf 檔案,禁用80 端口,以後隻用https的方式通路
重新開機httpd
補充案例---基于IP位址的虛拟主機
基于IP 位址的虛拟主機 多個ip 多個名字 端口号80 多個站點 實驗要求: 基于ip 的虛拟主機,三個站點及其ip 位址和站點主目錄分别為: 192.168.101.250 www.cisco.com /var/www/html 192.168.101.251 tec.cisco.com /var/www/tec 192.168.101.252 mkt.cisco.com /var/www/mkt 要求 www.cisco.com 站點可通過http 方式通路,tec.cisco.com 和 mkt.cisco.com 通過https 的方式通路 1. 安裝dns 伺服器 rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm 2. 在/var/named/chroot/etc 下cp -p named.caching-nameserver.conf named.conf 3. 編輯區域聲明檔案named.rfc1912.zones ,聲明區域cisco.com 4. 切換到目錄/var/named/chroot/var/named 下,cp -p localdomain.zone cisco.com.db 5. 解析測試(如果在該dns 伺服器上測試,需要指明dns 伺服器位址/etc/resolv.conf 或setup ) 6. 安裝httpd 伺服器,安裝證書伺服器省略 7. 修改httpd 的配置檔案httpd.conf <VirtualHost 192.168.101.250:80> ServerAdmin [email protected] DocumentRoot /var/www/html ServerName www.cisco.com ErrorLog logs/www_error_log CustomLog logs/www_access_log common </VirtualHost> <VirtualHost 192.168.101.251:80> DocumentRoot /var/www/tec ServerName tec.cisco.com ErrorLog logs/tec_error_log CustomLog logs/tec_access_log common <VirtualHost 192.168.101.252:80> DocumentRoot /var/www/mkt ServerName mkt.cisco.com ErrorLog logs/mkt_error_log CustomLog logs/mkt_access_log common 8. 建立www ,tec ,mkt 的站點主目錄及網頁檔案 9. 添加網卡,設定ip 位址 10. 測試通路三個站點 11. 分别為三個站點建立目錄用來存放各自的私鑰檔案。請求檔案,以及證書檔案。由于本實驗不要求www 主站點使用https 方式通路,是以該站點不用申請證書 12. tec 站點産生私鑰檔案tec_httpd.key 13. tec 站點根據自己私鑰産生請求檔案 14.CA 伺服器為tec 站點頒發證書 15. 同理産生mkt 的私鑰和請求,和證書 16. 修改ssl.conf 檔案 ,當用戶端通路不同的站點時,加載不同的證書 虛拟站點一,不使用https 方式,是以此處端口為80 ; 虛拟站點二,使用https 方式通路,端口号設定為443 該虛拟站點的證書檔案、私鑰檔案、證書鍊位置,當用戶端通路該站點時,将該證書發送給用戶端 虛拟站點三,使用https 17. 編輯httpd.conf 檔案,該檔案包含ssl.conf 檔案。 在此處,隻監聽192.168.101.250 的80 端口,如果直接寫Linstn 80 ,則所有站點的80 端口都将開啟,tec 和mkt 站點這時也将可以通過http 方式通路,不安全。