在計算機網(wǎng)絡系統(tǒng)中,SSL VPN策略包含了兩個部分:一個是SSL(安全套接層)協(xié)議,一個是VPN(虛擬專用網(wǎng)絡)。
SSL(安全套接層)協(xié)議是在互聯(lián)上確保信息能夠安全傳輸?shù)耐ㄐ耪J證協(xié)議,通過“工作站→服務器”建立通信聯(lián)系,作用于TCP/IP模型的應用層,通過設定網(wǎng)絡傳輸應用程序和TCP/IP之間的安全機制,為TCP/IP實現(xiàn)網(wǎng)絡連接對需要傳輸?shù)臄?shù)據(jù)進行加密,需要在客戶端和服務器端實現(xiàn)身份認證。
VPN(虛擬專用網(wǎng)絡)上指在大型和超大型的網(wǎng)絡系統(tǒng)(如:互聯(lián)網(wǎng))中,建立一個屬于自己的網(wǎng)絡傳輸系統(tǒng),將互聯(lián)網(wǎng)中的其他網(wǎng)絡傳輸系統(tǒng)隔離出去了。當然,使用該策略只是臨時的,其本質相當于一個點對點的網(wǎng)絡數(shù)據(jù)傳輸模型。
在本文設計的通信系統(tǒng)中,采用SSL VPN策略來確保數(shù)據(jù)通信過程的安全。SSL可以保證兩個應用間通信的保密性和可靠性,可在服務器端(根據(jù)印刷企業(yè)的實際需要,可以不用設置專用服務器)和用戶端同時實現(xiàn)支持。該協(xié)議可以確保用戶/服務器應用間的通信不被攻擊者竊聽,并且始終對服務器進行認證,還可選擇對用戶進行認證。
SSL VPN策略的核心是SSL協(xié)議,它指定了在應用程序(如 HTTP、Telnet 和 FTP等)和TCP/IP協(xié)議之間進行數(shù)據(jù)交換的安全機制,為TCP/IP連接提供數(shù)據(jù)加密、服務器認證以及可選的客戶機認證。SSL協(xié)議是由SSL記錄協(xié)議、握手協(xié)議、密鑰更改協(xié)議和告警協(xié)議組成,它們共同為應用訪問連接提供認證、加密和防篡改等功能。
SSL VPN通過數(shù)據(jù)包封裝技術來實現(xiàn)虛擬專用網(wǎng)的私有性,通過PKI技術和加密技術來鑒別通信雙方的身份和確保傳輸數(shù)據(jù)的安全。SSL VPN可以構建外聯(lián)網(wǎng)、內聯(lián)網(wǎng)和遠程訪問等多種VPN系統(tǒng),支持IPv4/IPv6、NetwareIPX、Appletalk等多種網(wǎng)絡協(xié)議,可成功穿越NAT設備。
SSL VPN工作在系統(tǒng)用戶空間,具有組網(wǎng)靈活性強、增強的遠程安全接入、細粒度的訪問控制、管理維護成本低、用戶操作維護簡便、能夠穿越防火墻等特點。
SSL VPN一般的實現(xiàn)方式是在印刷企業(yè)的防火墻后面放置一個SSL代理服務器,SSL代理服務器將提供一個遠程用戶與各種不同的應用服務器之間的連接,主要依靠握手協(xié)議、記錄協(xié)議、警告協(xié)議實現(xiàn),SSL VPN的通信過程主要集中在握手協(xié)議上,其實現(xiàn)步驟是:
1.SSL客戶機連接到SSL服務器,并要求服務器驗證身份;
2.服務器通過發(fā)送數(shù)字證書證明自身的身份,其中包括整個證書鏈,直到某個證書頒發(fā)機構(CA),通過檢查有效日期并確認證書包含可信任CA的數(shù)字簽名來驗證證書的有效性;
3.服務器發(fā)出一個請求,對客戶端的證書進行驗證;
4.雙方協(xié)商用于加密的消息加密算法和用于完整性檢查的HASH函數(shù),通常由客戶端提供它所支持的所有算法列表,然后由服務器選擇其中最強大的加密算法;
5.客戶機和服務器通過下列步驟生成會話密鑰:客戶機生成一個隨機數(shù),并使用服務器的公鑰(從服務器證書中獲得)對它加密,再送到服務器;服務器用更加隨機的數(shù)據(jù),用客戶機的公鑰加密,發(fā)送至客戶機以表示響應;使用HASH函數(shù)從隨機數(shù)據(jù)中生成密鑰。
以上通信過程的關鍵參考代碼如下:
(1)服務器端通信連接關鍵代碼:
//新建Socket

//綁定端口


//開始接收TCP鏈接。

//接受客戶端TCP鏈接

//新建SSL

//獲得SSL鏈接用到的算法

//獲得客戶端證書


(2)客戶端通信連接關鍵代碼:
//創(chuàng)建socket并鏈接到服務器端


//服務端地址

//服務端口
//鏈接服務器

// TCP鏈接開啟SSL協(xié)議

//啟動SSL鏈接

//獲取SSL鏈接的算法

//獲得服務端證書


本項目建立的安全網(wǎng)絡通道,首先是利用OpenSSL軟件創(chuàng)建CA證書,其次有文獻對OpenSSL的組件化封裝做了研究與實現(xiàn),另外,眾多文獻都涉及到OpenSSL技術。通信雙方只有擁有相應證書才能建立TCP鏈接,進行雙方的數(shù)據(jù)交換。數(shù)字證書是一個經(jīng)證書授權中心數(shù)字簽名的包含公開密鑰擁有者信息和公開密鑰的文件。證書的管理的實現(xiàn)步驟是:證書的申請→證書廢除列表CRL→證書的撤銷。
在設計過程中,依托PKI技術和數(shù)字證書的管理體制,以OpenSSL工具為基礎,用VC開發(fā)用戶證書管理系統(tǒng)的實現(xiàn),完成了對用戶證書系統(tǒng)管理的模擬實現(xiàn)。
OpenSSL是一個功能豐富且自包含的開源安全工具箱,本設計使用的OpenSSL版本0.9.8e,利用它創(chuàng)建server.crt以 及client.crt。