在計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)中,SSL VPN策略包含了兩個(gè)部分:一個(gè)是SSL(安全套接層)協(xié)議,一個(gè)是VPN(虛擬專用網(wǎng)絡(luò))。
SSL(安全套接層)協(xié)議是在互聯(lián)上確保信息能夠安全傳輸?shù)耐ㄐ耪J(rèn)證協(xié)議,通過(guò)“工作站→服務(wù)器”建立通信聯(lián)系,作用于TCP/IP模型的應(yīng)用層,通過(guò)設(shè)定網(wǎng)絡(luò)傳輸應(yīng)用程序和TCP/IP之間的安全機(jī)制,為TCP/IP實(shí)現(xiàn)網(wǎng)絡(luò)連接對(duì)需要傳輸?shù)臄?shù)據(jù)進(jìn)行加密,需要在客戶端和服務(wù)器端實(shí)現(xiàn)身份認(rèn)證。
VPN(虛擬專用網(wǎng)絡(luò))上指在大型和超大型的網(wǎng)絡(luò)系統(tǒng)(如:互聯(lián)網(wǎng))中,建立一個(gè)屬于自己的網(wǎng)絡(luò)傳輸系統(tǒng),將互聯(lián)網(wǎng)中的其他網(wǎng)絡(luò)傳輸系統(tǒng)隔離出去了。當(dāng)然,使用該策略只是臨時(shí)的,其本質(zhì)相當(dāng)于一個(gè)點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò)數(shù)據(jù)傳輸模型。
在本文設(shè)計(jì)的通信系統(tǒng)中,采用SSL VPN策略來(lái)確保數(shù)據(jù)通信過(guò)程的安全。SSL可以保證兩個(gè)應(yīng)用間通信的保密性和可靠性,可在服務(wù)器端(根據(jù)印刷企業(yè)的實(shí)際需要,可以不用設(shè)置專用服務(wù)器)和用戶端同時(shí)實(shí)現(xiàn)支持。該協(xié)議可以確保用戶/服務(wù)器應(yīng)用間的通信不被攻擊者竊聽(tīng),并且始終對(duì)服務(wù)器進(jìn)行認(rèn)證,還可選擇對(duì)用戶進(jìn)行認(rèn)證。
SSL VPN策略的核心是SSL協(xié)議,它指定了在應(yīng)用程序(如 HTTP、Telnet 和 FTP等)和TCP/IP協(xié)議之間進(jìn)行數(shù)據(jù)交換的安全機(jī)制,為TCP/IP連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證以及可選的客戶機(jī)認(rèn)證。SSL協(xié)議是由SSL記錄協(xié)議、握手協(xié)議、密鑰更改協(xié)議和告警協(xié)議組成,它們共同為應(yīng)用訪問(wèn)連接提供認(rèn)證、加密和防篡改等功能。
SSL VPN通過(guò)數(shù)據(jù)包封裝技術(shù)來(lái)實(shí)現(xiàn)虛擬專用網(wǎng)的私有性,通過(guò)PKI技術(shù)和加密技術(shù)來(lái)鑒別通信雙方的身份和確保傳輸數(shù)據(jù)的安全。SSL VPN可以構(gòu)建外聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)和遠(yuǎn)程訪問(wèn)等多種VPN系統(tǒng),支持IPv4/IPv6、NetwareIPX、Appletalk等多種網(wǎng)絡(luò)協(xié)議,可成功穿越NAT設(shè)備。
SSL VPN工作在系統(tǒng)用戶空間,具有組網(wǎng)靈活性強(qiáng)、增強(qiáng)的遠(yuǎn)程安全接入、細(xì)粒度的訪問(wèn)控制、管理維護(hù)成本低、用戶操作維護(hù)簡(jiǎn)便、能夠穿越防火墻等特點(diǎn)。
SSL VPN一般的實(shí)現(xiàn)方式是在印刷企業(yè)的防火墻后面放置一個(gè)SSL代理服務(wù)器,SSL代理服務(wù)器將提供一個(gè)遠(yuǎn)程用戶與各種不同的應(yīng)用服務(wù)器之間的連接,主要依靠握手協(xié)議、記錄協(xié)議、警告協(xié)議實(shí)現(xiàn),SSL VPN的通信過(guò)程主要集中在握手協(xié)議上,其實(shí)現(xiàn)步驟是:
1.SSL客戶機(jī)連接到SSL服務(wù)器,并要求服務(wù)器驗(yàn)證身份;
2.服務(wù)器通過(guò)發(fā)送數(shù)字證書(shū)證明自身的身份,其中包括整個(gè)證書(shū)鏈,直到某個(gè)證書(shū)頒發(fā)機(jī)構(gòu)(CA),通過(guò)檢查有效日期并確認(rèn)證書(shū)包含可信任CA的數(shù)字簽名來(lái)驗(yàn)證證書(shū)的有效性;
3.服務(wù)器發(fā)出一個(gè)請(qǐng)求,對(duì)客戶端的證書(shū)進(jìn)行驗(yàn)證;
4.雙方協(xié)商用于加密的消息加密算法和用于完整性檢查的HASH函數(shù),通常由客戶端提供它所支持的所有算法列表,然后由服務(wù)器選擇其中最強(qiáng)大的加密算法;
5.客戶機(jī)和服務(wù)器通過(guò)下列步驟生成會(huì)話密鑰:客戶機(jī)生成一個(gè)隨機(jī)數(shù),并使用服務(wù)器的公鑰(從服務(wù)器證書(shū)中獲得)對(duì)它加密,再送到服務(wù)器;服務(wù)器用更加隨機(jī)的數(shù)據(jù),用客戶機(jī)的公鑰加密,發(fā)送至客戶機(jī)以表示響應(yīng);使用HASH函數(shù)從隨機(jī)數(shù)據(jù)中生成密鑰。
以上通信過(guò)程的關(guān)鍵參考代碼如下:
(1)服務(wù)器端通信連接關(guān)鍵代碼:
//新建Socket
//綁定端口
//開(kāi)始接收TCP鏈接。
//接受客戶端TCP鏈接
//新建SSL
//獲得SSL鏈接用到的算法
//獲得客戶端證書(shū)
(2)客戶端通信連接關(guān)鍵代碼:
//創(chuàng)建socket并鏈接到服務(wù)器端
//服務(wù)端地址
//服務(wù)端口
//鏈接服務(wù)器
// TCP鏈接開(kāi)啟SSL協(xié)議
//啟動(dòng)SSL鏈接
//獲取SSL鏈接的算法
//獲得服務(wù)端證書(shū)
本項(xiàng)目建立的安全網(wǎng)絡(luò)通道,首先是利用OpenSSL軟件創(chuàng)建CA證書(shū),其次有文獻(xiàn)對(duì)OpenSSL的組件化封裝做了研究與實(shí)現(xiàn),另外,眾多文獻(xiàn)都涉及到OpenSSL技術(shù)。通信雙方只有擁有相應(yīng)證書(shū)才能建立TCP鏈接,進(jìn)行雙方的數(shù)據(jù)交換。數(shù)字證書(shū)是一個(gè)經(jīng)證書(shū)授權(quán)中心數(shù)字簽名的包含公開(kāi)密鑰擁有者信息和公開(kāi)密鑰的文件。證書(shū)的管理的實(shí)現(xiàn)步驟是:證書(shū)的申請(qǐng)→證書(shū)廢除列表CRL→證書(shū)的撤銷。
在設(shè)計(jì)過(guò)程中,依托PKI技術(shù)和數(shù)字證書(shū)的管理體制,以O(shè)penSSL工具為基礎(chǔ),用VC開(kāi)發(fā)用戶證書(shū)管理系統(tǒng)的實(shí)現(xiàn),完成了對(duì)用戶證書(shū)系統(tǒng)管理的模擬實(shí)現(xiàn)。
OpenSSL是一個(gè)功能豐富且自包含的開(kāi)源安全工具箱,本設(shè)計(jì)使用的OpenSSL版本0.9.8e,利用它創(chuàng)建server.crt以 及client.crt。