基于HTTPS的統(tǒng)一通信系統(tǒng)安全設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
統(tǒng)一通信由于融合了傳統(tǒng)通信網(wǎng)絡(luò)和計(jì)算機(jī)網(wǎng)絡(luò),故可通過(guò)豐富的終端軟件和網(wǎng)絡(luò)Web服務(wù)的結(jié)合,向用戶提供語(yǔ)音通信、視頻通信、IM通信(即時(shí)通信)、協(xié)同辦公等綜合應(yīng)用業(yè)務(wù)服務(wù)。在統(tǒng)一通信平臺(tái)的使用過(guò)程中,服務(wù)器中充斥著大量來(lái)自各個(gè)客戶端、各個(gè)服務(wù)器的大量通信數(shù)據(jù)??紤]到網(wǎng)絡(luò)的復(fù)雜性以及諸多不安全因素,幾乎所有通過(guò)Web服務(wù)提供的企業(yè)應(yīng)用程序都需要有一定的安全性。同時(shí),個(gè)人信息等數(shù)據(jù)資料對(duì)于一個(gè)企業(yè)來(lái)說(shuō),都是非常重要的資產(chǎn),想要確保這些數(shù)據(jù)資料的安全和完整,擁有一個(gè)具有良好安全性的系統(tǒng)是必不可少的。
1 HTTPS簡(jiǎn)介
HTTPS(SecureHypertextTransferProtocol,安全超文本傳輸協(xié)議)是基于HTTP開發(fā)的協(xié)議,可用于客戶計(jì)算機(jī)和服務(wù)器之間的信息交換。它們?cè)诮粨Q信息的過(guò)程中使用的是SSL(SecuritySocketLayer,安全套接字層)。
HTTPS和HTTP的區(qū)別在于:HTTPS協(xié)議需要用到CA申請(qǐng)證書,而HTTP所傳輸?shù)膬?nèi)容是明文,不具有安全性;HTTP是通過(guò)SSL加密的安全傳輸協(xié)議。并且二者所使用的端口不相同,HTTP使用的是80端口,HTTPS使用的是443端口。也就是說(shuō),HTTPS是HTTP和SSL的集合。
SSL位于HTTP和TCP之間,是可選的,圖1所示是SSL的示意圖。它可在Web瀏覽器和Web服務(wù)器之間(P2P)建立安全的連接,其提供的安全特性包括:Authentication認(rèn)證,即用于提供瀏覽器和服務(wù)器間的認(rèn)證;Confidentiality保密性,可提供請(qǐng)求和響應(yīng)之間的數(shù)據(jù)加密;Integrity完整性則可保證請(qǐng)求和響應(yīng)的數(shù)據(jù)在傳輸過(guò)程中不會(huì)被修改。
統(tǒng)一通信服務(wù)器可通過(guò)SSL安全連接進(jìn)行監(jiān)聽(tīng),因此,在客戶端訪問(wèn)服務(wù)器的時(shí)候,要用到相應(yīng)的CA(CertificateAuthority,認(rèn)證中心)認(rèn)證證書,這樣,對(duì)于訪問(wèn)的安全性就提供了保障,但同時(shí)也增加了SOAP客戶端部署的復(fù)雜度,服務(wù)器需要預(yù)先發(fā)放匹配的證書,或者由客戶端從服務(wù)器下載相應(yīng)的證書,才能正確的完成訪問(wèn)。
2 統(tǒng)一通信的安全解決方案
統(tǒng)一通信系統(tǒng)在連接時(shí),需要系統(tǒng)提供保障的安全性。連接時(shí)通常釆用HTTPS對(duì)Web服務(wù)的連接進(jìn)行加密。HTTPS可以通過(guò)SSL建立一個(gè)信息安全通道,以保證數(shù)據(jù)傳輸時(shí)的安全。而HTTPS只是在消息傳輸時(shí)才對(duì)數(shù)據(jù)進(jìn)行加密,而并未對(duì)后續(xù)過(guò)程中的數(shù)據(jù)進(jìn)行加密,圖2所示是其加密解決方案。
本文的統(tǒng)一通信系統(tǒng)選擇采用HTTPSCHTTPo-verSecureSocketLayer)來(lái)為該統(tǒng)一通信系統(tǒng)提供安全通信的保證。采用HTTPS系統(tǒng)來(lái)進(jìn)行安全保證的流程:首先是服務(wù)器從CA(CertificateAuthority,證書驗(yàn)證機(jī)構(gòu))獲得用于證明自己身份的證書,并在客戶端發(fā)起連接請(qǐng)求時(shí)發(fā)送證書。然后,客戶端通過(guò)自身維護(hù)的可信CA列表和鑰匙庫(kù)來(lái)檢査來(lái)自服務(wù)器的證書,以決定是否接收。從證書中得到服務(wù)器的公鑰后,客戶端將生成一個(gè)隨機(jī)的對(duì)稱密鑰,然后用服務(wù)器的公鑰加密該對(duì)稱密鑰并發(fā)送過(guò)去。這樣,服務(wù)器和客戶端就共享了一個(gè)對(duì)稱的會(huì)話密鑰,接下來(lái)就可以使用該會(huì)話密鑰對(duì)身份驗(yàn)證和實(shí)際請(qǐng)求和響應(yīng)的消息進(jìn)行加密了。其加密的全過(guò)程如圖3所示。
3 實(shí)現(xiàn)與結(jié)果展示
在該統(tǒng)一通信服務(wù)器中.SOAP接口是使用安全連接進(jìn)行加密的,這就要求客戶端的證書和服務(wù)器端證書能夠匹配才能夠正確建立連接。而在服務(wù)器端,證書keystore已經(jīng)部署在服務(wù)器上,客戶端需要對(duì)該證書進(jìn)行下載,然后通過(guò)該證書來(lái)加密與服務(wù)器連接時(shí)的數(shù)據(jù)傳輸通道,從而保證系統(tǒng)安全。
SSL在服務(wù)器端的監(jiān)聽(tīng)偽代碼如下:
Void sslEncryption()
{
httpServer=new Server();
//向 httpServer 添加監(jiān)聽(tīng)端口
httpServer.addListener(端口);
//建立SSL監(jiān)聽(tīng)
SslListener sslListener=new SslListener();
//設(shè)置SSL監(jiān)聽(tīng)的加密密鑰
sslListener,setKeystore(keyStore);
//設(shè)置SSL監(jiān)聽(tīng)的加密密鑰類型,如JKS
sslListener.setKeystoreType(keystoreType);
//設(shè)置SSL監(jiān)聽(tīng)的加密算法
sslListener,setAlgorithm("SunX509");
//設(shè)置SSL監(jiān)聽(tīng)的加密密碼
sslListener.setPassword(密碼);
//設(shè)置加密端口
sslListener,setPort(端口號(hào));
sslListener.open();
}
整個(gè)系統(tǒng)的安全措施示意圖如圖4所示。
在對(duì)系統(tǒng)進(jìn)行部署后,在瀏覽器中輸入https://127.0.0.1;8443/services,就會(huì)出現(xiàn)如圖5所示的警告提示框。
單擊選項(xiàng)時(shí),就可以看到在瀏覽器中的地址欄變成了綠色,這種顏色表示訪問(wèn)的系統(tǒng)為安全鏈接。如圖6所示。
4 結(jié)語(yǔ)
本文采用HTTPS方式來(lái)保證基于Web服務(wù)的統(tǒng)一通信系統(tǒng)的通信安全。同時(shí)數(shù)據(jù)的加密過(guò)程來(lái)保證統(tǒng)一通信系統(tǒng)的數(shù)據(jù)安全與完整。通過(guò)對(duì)該方式在統(tǒng)一通信系統(tǒng)中的實(shí)驗(yàn),驗(yàn)證了HTTPS加密方法在系統(tǒng)中的合理性與可靠性。