- Linux服務器安全策略詳解(第2版)
- 曹江華
- 2323字
- 2019-01-01 07:27:53
2.2 理解服務器證書(CA)
2.2.1 X.509協議簡介
SSL采用的是X.509協議,由上而下金字塔式的憑證制度(如圖2-3所示)。在X.509協議中,每一個合格的憑證上,都會有一個簽名。最下層的憑證上,會有一個認證中心(CA)的簽名,表示這個認證中心(CA)檢查過,確認所有者數據無誤。中間的認證中心(CA)上,也會有管轄它的最高層認證中心(root CA)的簽名,表示最高層認證中心授權給它,可以簽發別人的憑證。只有最高層認證中心上,因為它已經是最大,沒有上層可以給它簽名了,所以只好自己簽自己,憑證上的簽名是自己簽的。X.509協議用于給大型計算機網絡提供目錄服務,X.509提供了一種用于認證X.509服務的PKI結構,兩者(X.500標準和X.509標準)都屬于ISO和ITU提出的X系列國際標準。目前,有許多公司發展了基于X.509的產品,例如Visa、MasterCard、Netscape,而且基于該標準的Internet和Intranet產品越來越多。X.509是目前唯一的已經實施的PKI系統。X.509 V3是目前的最新版本,在原有版本的基礎上擴充了許多功能,目前電子商務的安全電子交易(SET)協議也采用X.509 V3。

圖2-3 基于X.509協議的認證結構圖
2.2.2 金字塔結構的優缺點
(1)優點
在無限寬廣的網際網路上,我們根本不知道會碰到什么樣的網站,所以根本也無從確認每一個收到的Public Key有沒有問題,是不是真的是這家公司的網站,我們是不是真的是跟這家公司打交道。在X.509標準下,只要我們預先認得幾家可靠的最高層認證中心就好了。碰到不認識的Public Key時,只要一層一層往上追溯,如果最后追溯得到一個我們認得的可靠的最高層認證中心,那這個Public Key就沒有問題。這樣的做法,簡化了無限寬廣的網際網路上,確認彼此身份的困難性。
(2)缺點
因為X.509是金字塔結構,最高層認證中心(root CA)手中握有整個網際網路信任關系的關鍵,權力太大了。龐大的權力,伴隨著的是龐大的利益。跟認證中心打過交道(如VeriSign、HiTrust網際威信)的都知道,申請簽發SSL憑證非常貴,一年年費要好幾萬,普通人或中小企業,需要SSL網站加密的時候,根本就負擔不起。而金字塔頂層的最高層認證中心是壟斷事業,數目很少,不會有什么競爭,所以大型的最高層認證中心姿態都很高,年費一直降不下來。但若不靠這些最高層認證中心,自己來發證,程序沒有內建我們自制的認證中心,連到SSL網站上,一定會出現告警。
2.2.3 相關名詞解釋
(1)數字簽名
數字簽名是用Private Key針對某一段數據用Digest Hash算法(如SHA1)做出來的Digest摘要碼。只要原來的數據有所不同,演算出來的Digest摘要碼就會跟著變動。日后收到這個Public Key的人,只要檢查上面認證中心的簽名,就可以知道這個代碼和它上面所載的所有人數據相不相符。也就知道連接的服務器,是不是真正的Web服務器。
(2)Private Key(私鑰)
公鑰算法中使用的加密密鑰對的安全部分。私鑰通常用于解密會話密鑰、對數據進行數字簽名或解密已使用相應公鑰加密的數據。
(3)Public Key(公鑰)
公鑰算法中使用的加密密鑰對的非安全部分。公鑰通常用于加密會話密鑰、驗證數字簽名或加密可使用相應私鑰解密的數據。
(4)憑證
憑證的英文是Certificate,附著所有人(Owner)的數據(公司名稱、服務器名稱、個人真實姓名、電子郵件E-mail、通信地址等數據),后面加上數字簽名的Public Key。憑證上會附有幾個數字簽名,代表這些簽名的人,用來確認這個Public Key的所有人,和憑證上所載的數據相符,沒有造假。在X.509協議中,最下層每一個合格的憑證(Certificate)上,會有一個認證中心(CA)的簽名,表示這個認證中心(CA)檢查過,確認憑證上的所有者數據無誤。當程序碰到沒見過的憑證時,只要檢查憑證上認證中心(CA)的簽名無誤,即代表這個認證中心(CA)核查過這個憑證(Certificate),憑證上的資料無誤。
(5)認證中心
認證中心的英文是CA,是Certificate Authority的縮寫。認證中心是X.509協議的一環。認證中心也是一種憑證,上面附有認證中心本身的資料,但不是用來加解密,而是用來簽發憑證,證明憑證所有人和憑證上所載的數據無誤。每一個合格的認證中心(CA)上,會有一個管轄它的最高層認證中心(root CA)的簽名,表示最高層認證中心授權給它,可以簽發別人的憑證。當程序碰到沒見過的憑證,憑證上簽名的認證中心(CA)也沒見過時,只要檢查認證中心上附的最高層認證中心(root CA)的簽名無誤,即認為這個認證中心(CA)具有簽發憑證(Certificate)的資格。所以這個認證中心(CA)簽發的憑證(Certificate)有效,憑證上的資料也沒有問題。
一份數字證書包括了公鑰、個人、服務器或者其他機構的身份信息(稱之為主題),證書的身份實體由可以識別的名字字段組成,如表2-1所示。
表2-1 可以識別的名字字段

(6)最高層認證中心
最高層認證中心的英文是root CA,也稱為頂級CA。最高層認證中心是X.509協議的一環。最高層認證中心也是認證中心(CA),和一般認證中心的差別在于,它不會直接用來簽發憑證,而是授權給一些中間的認證中心,讓這些中間的認證中心來簽發憑證。最高層認證中心,因為已經擁有最高權限,沒有上層可以給它簽名了,所以憑證上的是自己的簽名,不是別人的簽名。這樣就產生一個問題:最高一級的證書機構沒有授予者,那么誰為它的證書作擔保呢?僅在這種情況下,此證書是“自簽名的”,即證書的授予者和主題中的一樣,所以,必須對自簽名的證書倍加注意。頂級機構廣泛發布的公共密鑰可以減小信任這個密鑰所帶來的風險——這顯然比其他某個人發布密鑰并宣稱他是證書機構要安全一些。瀏覽器被默認地配置為信任的證書機構。
許多公司是專業證書機構,如Thawte(http://www.thawte.com/)和VeriSign(http://www.verisign.com/),它們提供如下服務:
① 驗證證書的申請;
② 處理證書的申請;
③ 授予和管理證書。
自己建立一個證書機構也是可能的,雖然在Internet環境中有風險,但在驗證個體或服務器較容易的Intranet環境中,會很有用。如果程序被加進一些不可靠的最高層認證中心,接下來碰到它簽的憑證,都會有問題,整個程序的安全都會被破壞。所以在X.509協議下,SSL程序一定要好好保護最高層認證中心,一定要再三確認,不可以隨便讓人手動加進最高層認證中心。