Linux實現https方式訪問站點

超文本傳送協議(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 主機沒法訪問該站點

linux

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文檔的最後不用再寫虛擬主機。

相關文章
相關標籤/搜索