Linux實現https方式訪問站點


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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM