超文本傳送協議(HyperText Transfer Protocol,HTML)是一種通訊協議,它容許將超文本標記語言文檔從web服務器傳送到wel瀏覽器。html
HTML的特色:linux
1.支持客戶/服務器模式。web
2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法經常使用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不一樣。因爲HTTP協議簡單使得HTTP服務器的程序規模小,於是通訊速度很快。瀏覽器
3.靈活:HTTP容許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。4.無鏈接:無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。安全
5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。 缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接傳送的數據量增大。另外一方面,在服務器不須要先前信息時它的應答就較快。服務器
客戶端瀏覽器以https的方式訪問web服務器的過程:dom
客戶端經過https方式訪問服務器全過程描述:ide
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文檔的最後不用再寫虛擬主機。