本發明涉及內容分發網絡領域,特別是涉及一種CDN服務器及其與客戶端連接方法、私鑰服務器及系統。
背景技術:
內容分發網絡(Content Delivery Network,CDN),通過在網絡各處放置緩存服務器,在現有的互聯網基礎之上構建一層智能虛擬網絡,將網站的內容發布到最接近用戶的網絡“邊緣”,使用戶可以就近取得所需的內容,以緩解網絡擁擠的狀況,提高網站的響應速度。
為了確保通信安全,CDN網絡中一般采用加密算法對傳輸的數據進行加密和解密。其中,加密算法一般包括對稱加密算法和非對稱加密算法。對稱加密算法在加密和解密時使用的是同一個秘鑰,而非對稱加密算法需要兩個密鑰來進行加密和解密,這兩個秘鑰中,一個是公開密鑰(public key,簡稱RSA公鑰),另一個是私有密鑰(private key,簡稱RSA私鑰)。
其中,非對稱加密算法中的RSA私鑰需要絕對的保密,不能外泄,而對于一些特殊的場景,如需要接入CDN服務的客戶端在與CDN服務器建立加密連接時,需要使用對應的RSA私鑰信息方可與客戶端之間完成加密連接,此時,CDN服務器則必須獲取客戶的RSA私鑰信息,因此,請求接入CDN服務的客戶端在與CDN服務器建立加密連接時,存在著安全性差的問題。
技術實現要素:
本發明實施例解決的問題是如何提高客戶端與CDN服務器之間建立加密連接的安全性。
為解決上述問題,本發明實施例提供了一種CDN服務器與客戶端連接方法,所述方法包括:當與客戶端建立加密連接時,將所接收的客戶端發送的加密數據發送至對應的私鑰服務器;所述加密數據為所述客戶端采用公鑰進行加密得到;接收所述私鑰服務器采用對應的私鑰對所述加密數據進行解密得到的解密數據;使用所述解密數據對與所述客戶端之間的交互數據進行加密和解密。
可選地,所述將所接收的客戶端采用公鑰加密的數據發送至對應的私鑰服務器,包括:采用異步非阻塞方式將所接收的客戶端采用公鑰加密的加密數據發送至對應的私鑰服務器。
可選地,所述解密數據為共享秘密數據。
可選地,所述私鑰服務器中存儲有一個以上的客戶的私鑰信息。
本發明實施例還提供了一種CDN服務器與客戶端連接方法,所述方法包括:當接收到CDN服務器發送的加密數據時,采用對應的私鑰對所述加密數據進行解密得到的解密數據;所述加密數據為請求與CDN服務器建立加密連接的客戶端采用公鑰進行加密得到;將所述解密數據發送至所述CDN服務器,以使得所述CDN服務器使用所述解密數據對與所述客戶端之間的交互數據進行加密和解密。
本發明實施例還提供了一種CDN服務器,所述CDN服務器包括:第一發送單元,適于當與客戶端建立加密連接時,將所接收的客戶端發送的加密數據發送至對應的私鑰服務器;所述加密數據為所述客戶端采用公鑰進行加密得到;接收單元,適于接收所述私鑰服務器采用對應的私鑰對所述加密數據進行解密得到的解密數據;加解密單元,適于使用所述解密數據對與所述客戶端之間的交互數據進行加密和解密。
可選地,所述發送單元,適于采用異步非阻塞方式將所接收的客戶端采用RSA公鑰加密的加密數據發送至對應的私鑰服務器。
可選地,所述解密數據為共享秘密數據。
可選地,所述私鑰服務器中存儲有一個以上的客戶的私鑰信息。
本發明實施例還提供了一種私鑰服務器,所述私鑰服務器包括:解密單元,適于當接收到CDN服務器發送的加密數據時,采用對應的私鑰對所述加密數據進行解密得到的解密數據;所述加密數據為請求與CDN服務器建立加密連接的客戶端采用公鑰進行加密得到;第二發送單元,適于將所述解密數據發送至所述CDN服務器,以使得所述CDN服務器使用所述解密數據對與所述客戶端之間的交互數據進行加密和解密。
本發明實施例還提供了一種CDN系統,所述CDN系統包括客戶端、上述的CDN服務器、上述的私鑰服務器和客戶源站;所述CDN服務器分別與所述客戶端和所述私鑰服務器耦接。
與現有技術相比,本發明的技術方案具有以下的優點:
上述的方案,在與客戶端之間建立加密連接,且接收到的客戶端發送的采用公鑰加密的加密數據時,將所述加密數據發送至對應的私鑰服務器進行解密,并從所述私鑰服務器接收對應的解密數據,在不需要獲取對應的客戶的私鑰的情況下,即可與客戶端之間建立加密連接,因而可以提高CDN服務器與客戶端之間建立加密連接的安全性。
附圖說明
圖1是本發明實施例中的一種CDN服務器與客戶端連接方法的流程圖;
圖2是本發明實施例中的另一種CDN服務器與客戶端連接方法的流程圖;
圖3是本發明實施例中的一種CDN系統的結構示意圖;
圖4是本發明實施例中的一種CDN服務器與客戶端連接方法的信令流程圖;
圖5是本發明實施例中的一種CDN服務器的結構示意圖;
圖6是本發明實施例中的一種私鑰服務器的結構示意圖。
具體實施方式
為解決現有技術中存在的上述問題,本發明實施例采用的技術方案通過將所接收到的請求建立加密連接的客戶端發送的采用RSA公鑰加密的加密數據時,將所述加密數據發送至對應的私鑰服務器進行解密,并從所述私鑰服務器接收對應的解密數據,以與客戶端之間建立加密連接,可以提高CDN服務器與客戶端之間建立加密連接的安全性。
為使本發明的上述目的、特征和優點能夠更為明顯易懂,下面結合附圖對本發明的具體實施例做詳細的說明。
圖1示出了本發明實施例中的一種CDN服務器與客戶端連接方法的流程圖。參見圖1,在具體實施中,本發明實施例中的CDN服務器與客戶端連接方法,可以包括如下的步驟:
步驟S101:當與客戶端建立加密連接時,將所接收的客戶端發送的加密數據發送至對應的私鑰服務器。
在具體實施中,所述加密數據為所述客戶端采用RSA公鑰進行加密得到。
步驟S102:接收所述私鑰服務器采用對應的私鑰對所述加密數據進行解密得到的解密數據。
在具體實施中,所述私鑰服務器中存儲有與所述客戶端所使用的所述RSA公鑰對應的RSA私鑰的信息,以對RSA公鑰加密的數據進行解密。
步驟S103:使用所述解密數據對與所述客戶端之間的交互數據進行加密和解密。
其中,所述解密數據,也即CDN服務器與客戶端之間進行數據交互所使用的共享秘密數據,也即premaster數據。在具體實施中,可以采用隨機數作為premaster數據。
圖2示出了本發明實施例中的另一種CDN服務器與客戶端連接方法的流程。參見圖2,本發明實施例中的CDN服務器與客戶端連接方法可以包括:
步驟S201:當接收到CDN服務器發送的加密數據時,采用對應的RSA私鑰對所述加密數據進行解密得到的解密數據。
在具體實施中,所述加密數據為請求與CDN服務器建立加密連接的客戶端采用RSA公鑰進行加密得到。
步驟S202:將所述解密數據發送至所述CDN服務器,以使得所述CDN服務器使用所述解密數據對與所述客戶端之間的交互數據進行加密和解密。
在具體實施中,私鑰服務器可以采用異步非阻塞的方式將所述解密數據發送至所述CDN服務器,以提高資源的利用效率。
下面將對本發明實施例中的CDN服務器與客戶端連接方法進行詳細的描述。
為了便于理解,首先對本發明實施例中的CDN系統進行介紹。
參見圖3,本發明實施例中的一種CDN系統可以包括客戶端301、一個以上的CDN服務器3021~302n和一個以上的私鑰服務器3031~303m。其中,CDN服務器3021~302n分別與客戶端301和私鑰服務器3031~303m耦接。
參見圖4,本發明實施例中的一種CDN服務器與客戶端連接方法,適于客戶端與CDN服務器之間建立加密連接,具體可以采用如下的步驟實現:
步驟S401:客戶端將采用公鑰解密得到的加密數據發送至CDN服務器。
在具體實施中,客戶端在需要接入CDN網絡,使用CDN網絡所提供的加速服務時,首先可以生成對應的加密連接請求并發送至CDN服務器。其中,所述加密連接請求中包括采用相應的RSA公鑰進行加密得到的加密數據。
在本發明一實施例中,客戶端在向CDN服務器發送對應的加密連接請求時,可以將對應的加密連接請求信息采用事先與CDN服務器協商好的加密算法進行相應的加密處理,以提高數據傳輸的安全性。其中,客戶端與CDN服務器協商確定的加密算法可以根據實際的需要進行設置,本發明在此不做限制。
步驟S402:所述CDN服務器將所接收的加密數據發送至私鑰服務器。
在具體實施中,CDN服務器可以接收客戶端發送的加密連接請求,并通過對應設置的接口從所接收的加密連接請求中解析出對應的加密數據并發送至私鑰服務器。其中,CDN服務器可以采用異步非阻塞的方式將對應的加密數據并發送至私鑰服務器,以提高資源的利用率。
在本發明一實施例中,為了提高數據傳輸的安全性,CDN服務器和私鑰服務器之間的數據交互也采用雙方實現約定的加密算法進行加密。
步驟S403:所述私鑰服務器采用對應的私鑰對所接收的加密數據進行解密得到對應的解密數據并發送至所述CDN服務器。
在具體實施中,所述私鑰服務器中存儲有對應的RSA私鑰的信息,當接收到CDN服務器發送的加密數據時,私鑰服務器可以采用對應的RSA私鑰對所接收的所述加密數據進行解密,從而得到對應的解密數據并發送至CDN服務器,以使得CDN服務器獲取對應的解密數據,或者稱為共享秘密(premaster)數據。
在具體實施中,私鑰服務器可以由客戶部署,也即相應客戶的RSA私鑰信息僅為客戶所知曉,CDN網絡提供商并不知曉私鑰服務器中的RSA私鑰的信息,從而可以確保RSA私鑰信息的安全性。當然根據實際的需要,也可以由CDN網絡提供商部署私鑰服務器,并提供對應的接口接收由客戶提交自身的RSA私鑰信息并存儲,且提交至私鑰服務器中的客戶的私鑰信息也采取了相應的手段進行加密,以使得CDN服務器無法獲取客戶的私鑰信息,以對客戶的私鑰信息加以保護。
步驟S404:所述CDN服務器接收所述解密數據。
步驟S405:所述CDN服務器重新驅動與所述客戶端之間的握手流程。
在具體實施中,CDN服務器在接收到所述解密數據時,重新驅動與所述客戶端之間的握手流程,直至與客戶端的加密連接完成。具體地,CDN服務器在接收到所述解密數據時,與客戶端使用所述解密數據進行后續的數據的加密和解密操作,直至本次的加密連接結束。
上述的方法對應的流程采用表格進行描述如表1所示。
表1
其中,“過程名稱”表明CDN服務器與客戶端的連接過程相應的步驟的名稱,“說明”用于對相應步驟進行補充說明。
在本發明一實施例中,上述的CDN服務器與客戶端的連接過程,可以采用openssl的握手階段的狀態機完成。具體而言,通過為openssl的握手階段的狀態機添加一數據發送狀態,當接收到私鑰服務器發送的解密數據時,CDN服務器將所接收的解密數據代入openssl的握手階段的狀態機,從而驅動openssl的握手階段的狀態機繼續運行,直至CDN服務器與客戶端的加密連接完成。
上述對本發明實施例中的方法進行了詳細的描述,下面將對上述的方法對應的裝置做介紹。
圖5示出了本發明實施例中的一種CDN服務器的結構。參見圖5,一種CDN服務器500可以包括第一發送單元501、接收單元502和加解密單元503,其中:
第一發送單元501,適于當與客戶端建立加密連接時,將所接收的客戶端發送的加密數據發送至對應的私鑰服務器;所述加密數據為所述客戶端采用RSA公鑰進行加密得到。
接收單元502,適于接收所述私鑰服務器采用對應的RSA私鑰對所述加密數據進行解密得到的解密數據。其中,所述解密數據為共享秘密數據。
加解密單元503,適于使用所述解密數據對與所述客戶端之間的交互數據進行加密和解密。
在本發明一實施例中,所述第一發送單元501,適于采用異步非阻塞方式將所接收的客戶端采用RSA公鑰加密的加密數據發送至對應的私鑰服務器。
在具體實施中,所述私鑰服務器中存儲有一個以上的客戶的RSA私鑰信息。
圖6示出了本發明實施例中的一種私鑰服務器的結構。參見圖6,所述私鑰服務器600可以包括解密單元601和第二發送單元602,其中:
解密單元601,適于當接收到CDN服務器發送的加密數據時,采用對應的RSA私鑰對所述加密數據進行解密得到的解密數據;所述加密數據為請求與CDN服務器建立加密連接的客戶端采用RSA公鑰進行加密得到。
第二發送單元602,適于將所述解密數據發送至所述CDN服務器,以使得所述CDN服務器使用所述解密數據對與所述客戶端之間的交互數據進行加密和解密。
采用本發明實施例中的上述方案,在接收到請求建立加密連接的客戶端發送的采用RSA公鑰加密的加密數據時,通過將所述加密數據發送至對應的私鑰服務器進行解密,并從所述私鑰服務器接收對應的解密數據,從而可以使用所述解密數據與客戶端之間建立加密連接,在不需要獲取對應的客戶的RSA私鑰的情況下,即可與客戶端之間建立加密連接,因而可以提高CDN服務器與客戶端之間建立加密連接的安全性和便利性。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于計算機可讀存儲介質中,存儲介質可以包括:ROM、RAM、磁盤或光盤等。
以上對本發明實施例的方法及系統做了詳細的介紹,本發明并不限于此。任何本領域技術人員,在不脫離本發明的精神和范圍內,均可作各種更動與修改,因此本發明的保護范圍應當以權利要求所限定的范圍為準。