超文本傳送協議(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)。新建掛載點,掛載光盤,編輯/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 是在 內,對應的是對訪問/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
8.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 webmaster@sina.com
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>
ServerAdmin webmaster@sina.com
DocumentRoot /var/www/tec
ServerName tec.cisco.com
ErrorLog logs/tec_error_log
CustomLog logs/tec_access_log common
</VirtualHost>
<VirtualHost 192.168.101.252:80>
ServerAdmin webmaster@sina.com
DocumentRoot /var/www/mkt
ServerName mkt.cisco.com
ErrorLog logs/mkt_error_log
CustomLog logs/mkt_access_log common
</VirtualHost>
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方式訪問,端口號設置為443
該虛擬站點的證書文件、私鑰文件、證書鏈位置,當客戶端訪問該站點時,將該證書發送給客戶端
17.編輯httpd.conf文件,該文件包含ssl.conf文件。
在此處,只監聽192.168.101.250 的80 端口,如果直接寫Linstn 80,則所有站點的80 端口都將開啟,tec和mkt站點這
由於在ssl.conf中定義了虛擬站點,所以在httpd.conf文檔的最后不用再寫虛擬主機。