歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

HTTPS安全訪問的原理及其應用

HTTPD簡介:

HTTPD 具有很高的穩定性,是深受企業歡迎的主要原因。它占據了市場60%的份額。采用http協議,加密的協議為HTTPS,具有mpm(多進程處理機制)滿足客戶端對站點訪問。其中mpm分為兩種:1.prefork,他是默認采用的一種方式,每當有一個用戶請求訪問便會產生一個進程為其服務,因此,他的穩定性很好,但是他最多同時有8個進程提供httpd服務,缺點就是占用了大量的內存。2.worker,同時最多有2個進程服務,每當有一個請求發過來,會在進程中產生一個線程為其服務,因此,他的穩定性低,優點就是不占用內存。HTTPS實際上應用了Netscape的安全套接字層(SSL)作為HTTP應用層的子層。(HTTPS使用端口443,而不是像HTTP那樣使用端口80來和TCP/IP進行通信。)

http協議的主要特點可概括為:

1. 支持C/S模式。

2. 應用層的協議中,簡單快速,只需傳遞路徑和方法。相應速度快。

3. 靈活,允許傳輸任意類型的數據對象。

4. 無連接協議,在服務器端處理完客戶的請求並受到客戶的應答後,即斷開連接。從而節省了傳輸時間。

5. 無狀態協議。並不跟蹤訪問過它的用戶。

HTTPS與HTTP的區別:

一、https協議需要到ca申請證書,一般免費證書很少,需要交費。

二、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。

三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。

四、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

SSL協議主要作用:

認證用戶和服務器,確保數據安全的發送到正確的客戶機和服務器。

SSL協議的握手流程圖:

SSL協議的握手過程:

1.用戶向服務器端發送訪問請求,服務器端向用戶發放證書,該證書中包含了公鑰和頒發機構的名稱等很多重要的信息。

2.客戶端利用服務器傳來的證書來檢驗服務器的合法性,包括證書是否過期,發行服務器證書的CA是否可靠。

3.如果證書檢查通過。客戶端隨機產生一個對稱密碼,值得注意的是客戶端每次訪問都會隨機產生一個密碼。然後用服務器的公鑰對這個對稱密碼進行加密,加密後傳給服務器。

4.服務器使用自己的私鑰對其解密,從而得到客戶端的密碼。

5.然後服務器和客戶端使用相同的密碼對信息進行加密。而且在此過程中ssl會保證數據的完整性。

試驗拓撲圖

硬件需求:

一台服務器(擔任CA、WEBserver),一台pc(扮演客戶端角色~)

軟件需求:

httpd-2.2.3-31.el5.i386.rpm

mod_ssl-2.2.3-31.el5.i386.rpm

實驗步驟:

安裝httpd

[root@zhangc Server]# yum install -y httpd-2.2.3-31.el5.i386.rpm

1》做身份驗證

編輯/var/www/html/.htaccess 對來訪的用戶進行控制

賬號服務目錄位置

驗證類型為基本身份驗證

有效用戶才能訪問

然後使用指令htpasswd來產生.htpasswd

[root@zhangc www]# htpasswd -c .htpasswd user1

-c 表示創建一個新文件 user1 只供user1使用

[root@zhangc www]# htpasswd -c .htpasswd user2

2》做來源控制:

查看訪問記錄:

在/var/log/httpd/目錄中有2個日志文件access_log、error_log。其中access_log 訪問成功的日志記錄。error_log表示訪問失敗的日志記錄。

3》加密訪問https

我們需要搭建:CA(證書的發放機關) WEB服務器(web服務器供用戶訪問web)Client(測試)

分為以下幾個步驟

1.CA的搭建:

CA的分發原理:

CA 證書的頒發機構,webserver向CA發出申請,然後CA將證書分發給WEBServer,然後web server與證書進行綁定,當用戶發送訪問請求時,web server將證書出示給用戶。

進入   /etc/pki/

Vim   tls/openssl.conf

Dir CA相關的文件的存放位置

已經發行過的證書的存放位置

Crl 證書吊銷列表   黑名單存放位置

Database 數據庫的索引文件

New-certs_dir  新證書存放的位置

Certificate 發證機關的證書存放位置 CA

Serial  序列號文件

將該文件修改為:

然後創建系統中不存在的文件夾[創建3個文件夾  2個文件Certs crl newcerts index.txt  serial  cakey.pem(私鑰文件)]

[root@zhangc CA]# mkdir certs crl newcerts

[root@zhangc CA]# touch index.txt serial

創建私鑰和證書

cakey.pem使用openssl

Openssl  genrsa   gen表示產生     rsa表示非對稱加密算法

並將生成的文件輸入到private/cakey.pem文件中

為了私鑰的安全,修改private/文件夾下的文件權限

有了私鑰才能產生證書

[root@zhangc ~]# cd /etc/pki/tls/

[root@zhangc tls]# vim openssl.cnf

編輯修改默認參數以及分發的匹配原則

[root@zhangc tls]# openssl req -new -key /etc/pki/CA/private/cakey.pem -x509 -out cacert.pem -days 3650【利用cakey.pem來產生證書,有效期為10年】

Web服務器(使用linux來做)

1.私鑰 2.證書請求 3.申請證書

創建文件夾/etc/pki/CA/etc/httpd/certs,用於存放以上3個文件

創建私鑰

[root@zhangc certs]# openssl genrsa 1024 >httpd.key

修改權限,以確保安全性

[root@zhangc certs]# chmod 600 httpd.key

產生一個請求證書

[root@zhangc certs]# openssl req -new -key httpd.key -out httpd.csr

利用csr請求 來 得到一份證書

然後將http與ssl 進行結合實現https來進行訪問

安裝mod_ssl

[root@zhangc Server]# yum install -y  mod_ssl-2.2.3-31.el5.i386.rpm

[root@zhangc Server]# cd /etc/httpd/conf.d/

安裝以後會產生ssl.conf文件

編輯ssl.conf,指明自己創建證書文件和私鑰文件

重新啟動服務

Service httpd restart

測試結果:

然後編輯/etc/httpd/conf.d/ssl.conf文件

打開證書鏈

再次重新啟動httpd服務

為了安全,關閉明文端口,禁止使用http訪問該站點

再次進行訪問

試驗完成。

本文出自 “學海無涯” 博客,請務必保留此出處http://zhangc.blog.51cto.com/5627676/970164

Copyright © Linux教程網 All Rights Reserved