使用SSL協議保證web服務通訊安全(二 實戰篇)

2021-09-22 04:37:45 字數 3389 閱讀 3653

我的參賽主頁是:

,請各位支援我,給我投上寶貴一票,謝謝!

apache伺服器與客戶端的通訊是明文方式,很多通過http協議傳送資料的應用將受到黑客的威脅,資訊的安全性難以得到保障。因此,本文就將對ssl協議進行深入剖析,並介紹如何使用ssl技術保護apache伺服器通訊。

全文請見:

。(續:使用ssl協議保證web服務通訊安全(一、基礎理論篇))

6.apache中ssl原理

在ssl通訊中,首先採用非對稱加密交換資訊,使得伺服器獲得瀏覽器端提供的對稱加密的金鑰,然後利用該金鑰進行通訊過程中資訊的加密和解密。為了保證訊息在傳遞過程中沒有被篡改,可以加密hash編碼來確保資訊的完整性。

伺服器數字證書主要頒發給web站點或其他需要安全鑑別的伺服器,證明伺服器的身份資訊,同樣客戶端數字證書用於證明客戶端的身份。

使用公用金鑰的方式可以保證資料傳輸沒有問題,但如果瀏覽器客戶訪問的站點被假冒,這也是乙個嚴重的安全問題。這個問題不屬於加密本身,而是要保證金鑰本身的正確性問題。要保證所獲得的其他站點公用金鑰為其正確的金鑰,而非假冒站點的金鑰,就必須通過乙個認證機制,能對站點的金鑰進行認證。當然即使沒有經過認證,仍然可以保證資訊傳輸安全,只是客戶不能確信訪問的伺服器沒有被假冒。如果不是為了提供電子商務等方面對安全性要求很高的服務,一般不需要如此嚴格的考慮。

下面給出使用ssl進行通訊的過程(參見圖2):

(1)客戶端向伺服器端發起對話,協商傳送加密演算法。例如:對稱加密演算法有des、rc5,金鑰交換演算法有rsa和dh,摘要演算法有md5和sha。

(2)伺服器向客戶端傳送伺服器數字證書。比如:使用des-rsa-md5這對組合進行通訊。客戶端可以驗證伺服器的身份,決定是否需要建立通訊。

(3)客戶端向伺服器傳送本次對話的金鑰。在檢查伺服器的數字證書是否正確,通過ca機構頒發的證書驗證了伺服器證書的真實有效性之後,客戶端生成利用伺服器的公鑰加密的本次對話的金鑰傳送給伺服器。

4)伺服器用自己的私鑰解密獲取本次通訊的金鑰。

(5)雙方的通訊正式開始。

圖2  ssl通訊流程示意

在一般情況下,當客戶端是保密資訊的傳遞者時,他不需要數字證書驗證自己身份的真實性,如使用者通常使用的網上銀行交易活動,客戶需要將自己的隱秘資訊——賬號和密碼傳送給銀行,因此銀行的伺服器需要安裝數字證書來表明自己身份的有效性,否則將會使得資訊洩露。當然,在某些安全性要求極高的b2b(business to business)應用,伺服器端也需要對客戶端的身份進行驗證,這時客戶端也需要安裝數字證書以保證通訊時伺服器可以辨別出客戶端的身份,驗證過程類似於伺服器身份的驗證過程。另外,在一些電子商務的應用中,可能還會使用到電子簽名,或者為了資訊交換的更加安全,會增加電子簽名和訊息校驗碼(mac)。而在通常情況下,瀏覽器都會通過互動的方式來完成上述的通訊過程,下面在linux中對apache採用ssl也會作詳細地介紹。

3  安裝和啟動ssl

1.安裝ssl

雖然apache伺服器不支援ssl,但apache伺服器有兩個可以自由使用的支援ssl的相關計畫,乙個為apache-ssl,它整合了apache伺服器和ssl,另乙個為apache+mod_ssl,它是通過可動態載入的模組mod_ssl來支援ssl,其中後乙個是由前乙個分化出的,並由於使用模組,易用性很好,因此使用範圍更為廣泛。還有一些基於apache並整合了ssl能力的商業web伺服器,然而使用這些商業web伺服器主要是北美,這是因為在那裡ssl使用的公開金鑰的演算法具備專利權,不能用於商業目的,其他的國家不必考慮這個專利問題,而可以自由使用ssl。

圖3  openssl軟體**首頁 

(1)用openssl-1.0.0b.tar.gz軟體包安裝openssl之前,首先須要對該軟體包進行解壓縮和解包。用以下命令完成軟體包的解壓縮和解包:

#tar xvfz openssl-1.0.0b.tar.gz

(2)解壓縮後,進入原始碼的目錄openssl-1.0.0b,並使用配置指令碼進行環境的設定。相應的命令為:

//改變當前目錄為openssl-1.0.0b目錄

#cd openssl-1.0.0b

//執行該目錄下配置指令碼程式

#./configure

(3)在執行./configure之後,配置指令碼會自動生成makefile。如果在設定的過程中沒有任何的錯誤,就可以開始編譯原始碼了。相應的命令及其顯示結果如下:

#make & make install

安裝好openssl之後,就可以安裝使用apache+mod_ssl了。然而為了安裝完全正確,需要清除原先安裝的apache伺服器的其他版本,並且還要清除所有的設定檔案及其預設設定檔案,以避免出現安裝問題。最好也刪除/usr/local/www目錄(或更名),以便安裝程式能建立正確的初始文件目錄。如果是一台沒有安裝過apache伺服器的新系統,就可以忽略這個步驟,而直接安裝apache+mod_ssl了。

2.啟動和關閉ssl

啟動和關閉該伺服器的命令如下所示:

#apachectl start:啟動apache。

#apachectl startssl:啟動apache ssl。

#apachectl stop:停止apache。

#apachectl restart:重新啟動apache。

#apachectl status:顯示apache的狀態。

#apachectl configtest:測試httpd.conf配置是否正確。

# /usr/local/sbin/apachectl startssl

此時使用start引數為僅僅啟動普通apache的httpd守護程序,而不啟動其ssl能力,而startssl才能啟動apache的ssl能力。如果之前apache的守護程序正在執行,便需要使用stop引數先停止伺服器執行。

然後,就可以啟動mozilla、ie或其他支援ssl的瀏覽器,輸入url為:https://ssl_server/來檢視伺服器是否有相應,https使用的預設埠為443,如果一切正常,伺服器將會返回給客戶端證書,由客戶端進行驗證並且判斷,是否接受該證書並進行下一步的通訊過程。

下面以linux下的mozilla firefox瀏覽器為例,來簡要說明使用apache+ssl伺服器的過程。首先,圖4給出了檢視和驗證該證書的相關提示;最後,圖5則給出了證書驗證成功後,採用ssl進行保密傳輸的具體介面示意:

圖4  驗證證書示意

圖5  證書通過驗證,正常通訊開始

使用SSL協議保證web服務通訊安全(二 實戰篇)

我的參賽主頁是 請各位支援我,給我投上寶貴一票,謝謝!apache伺服器與客戶端的通訊是明文方式,很多通過http協議傳送資料的應用將受到 的威脅,資訊的安全性難以得到保障。因此,本文就將對ssl協議進行深入剖析,並介紹如何使用ssl技術保護apache伺服器通訊。全文請見 續 使用ssl協議保證w...

使用SSL協議保證web服務通訊安全(二 實戰篇)

我的參賽主頁是 請各位支援我,給我投上寶貴一票,謝謝!apache伺服器與客戶端的通訊是明文方式,很多通過http協議傳送資料的應用將受到 的威脅,資訊的安全性難以得到保障。因此,本文就將對ssl協議進行深入剖析,並介紹如何使用ssl技術保護apache伺服器通訊。全文請見 續 使用ssl協議保證w...

如何使用SSL呼叫Web服務

如何使用ssl呼叫web服務 2006 03 24 13 48 資訊,它們可利用安全套接字層 ssl 協議所帶來的資料完整性和保密性。本文介紹如何配置 asp.net web 服務,從而要求客戶端在所有的通訊中都使用 ssl。此外,本文還展示了如何使用 https 協議從 asp.net 客戶端應用...