【正文】
及目錄服務(wù)器組成 。 RA和 CA以及 CA和數(shù)據(jù)庫之間的通信都是基于 SSL協(xié)議的加密傳輸 。 CA服務(wù)器 CA是整個認證機構(gòu)的核心 , 它保存了根 CA的私鑰 ,對其安全等級要求最高 。 CA服務(wù)器具有產(chǎn)生證書 、 實現(xiàn)密鑰備份等功能 。 這些功能應(yīng)盡量獨立實施 。 CA服務(wù)器通過安全連接同 RA和 LDAP服務(wù)器實現(xiàn)安全通信 。 CA的主要功能如表 1所示 。 表 1 CA的主要功能 CA初始化和 CA管理 處理證書申請 證書管理 交叉認證 生成新的 CA密鑰 對新的證書申請進行 CA簽名 輸出 CA證書申請 生成自簽名 CA證書 輸出 CA證書 輸入來自 RA的簽名請求 中斷申請 掛起申請 刪除申請 輸出 CRL LDAP, 數(shù)據(jù)庫更新及管理 產(chǎn)生證書鏈 利用固定證書鏈實現(xiàn)交叉認證 RA服務(wù)器 RA服務(wù)器相對復雜一些。它運行于安全 (實現(xiàn)雙向認證 )的 apache服務(wù)器上??紤]安全性起見,我們把RA分成兩部分: RA操作員和 RA服務(wù)器。客戶只能訪問到 RA操作員,不能直接和 RA服務(wù)器通信,所以 RA操作員是因特網(wǎng)用戶進入 CA的訪問點??蛻敉ㄟ^ RA操作員實現(xiàn)證書申請、撤銷、查詢等功能。 RA服務(wù)器也配有 LDAP服務(wù)器。 RA服務(wù)器由 RA管理員管理。 RA服務(wù)器的功能如表 2所示。 表 2 RA服務(wù)器的功能 證書申請 證書管理 CRL 其 它 輸出申請給 CA 掛起申請 刪除已經(jīng)輸出的申請 對申請進行驗證 輸入 CA證書 輸入新證書 輸出證書到 LDAP,數(shù)據(jù)庫 輸入 CRL 輸出證書撤銷申請 通過 Email通知用戶證書已經(jīng)發(fā)布刪除臨時文件 RA操作員的功能主要有: ① 獲取根 CA證書 ② 證書撤銷列表 ③ 驗證證書申請用戶身份 ④ 證書申請及列表 ⑤ 獲得已申請的證書 ⑥ 發(fā)布有效證書列表 ⑦ 證書撤銷請求 RA操作員和 RA服務(wù)器之間的通信都通過安全 Web會話實現(xiàn) (Apache+ mod_ssl)。 RA操作員的數(shù)量沒有限制。 (注意: RA的證書是通過 bin/目錄下的腳本程序 ,產(chǎn)生的證書具有 ?.p12格式,可以直接導入到 RA的 Netscape瀏覽器中 )。 證書目錄服務(wù)器 (CA Directory Service Server) 認證中心頒發(fā)的證書只是捆綁了特定實體的身份和公鑰 , 但是沒有提供如何找到該實體證書的方法 , 因此必須使用某種穩(wěn)定可靠的 、 規(guī)??蓴U充的在線數(shù)據(jù)庫系統(tǒng)來實現(xiàn)證書的獲取 。 目錄服務(wù)器就是為此目的而建的 。 認證中心所簽發(fā)的所有證書都存放在目錄服務(wù)器上 ,當終端用戶需要確認證書信息時 , 通過 LDAP協(xié)議下載證書或者吊銷證書列表 , 或者通過 OCSP(在線證書狀態(tài)協(xié)議 ), 向目錄服務(wù)器查詢證書的當前狀況 。 LDAP 代 表 輕 量 級 目 錄 訪 問 協(xié) 議 (Lightweight Directory Access Protocol), 運行于 TCP/IP之上 。 LDAP信息是基于目錄項 (Entries)的概念的 。 一個目錄項是屬性的集合 , 這些屬性具有全局惟一的可識別名 DN(Globallyunique Distinguished Name )。 DN用于無二義性的引用一個目錄項 。 每個目錄項的屬性都包括一個類型和一個或多個值 。 類型通常是一些很好記憶的字符串 , 像 “ ”代表通用名 (mon name), 或者 “ mail”代表 Email地址 。 值的語法依賴于屬性類型 。例如 , 屬性可能包含值 Babs Jensen, mail屬性包含值, 屬性 jpegPhoto 包含 JPEG(binary)格式的圖片 。 1. 信息的組織 在 LDAP中 , 目錄項按照層次樹型結(jié)構(gòu)進行組織 。 通常 , 這種結(jié)構(gòu)反映了地理范圍或者組織范圍內(nèi)的一種結(jié)構(gòu) 。 樹頂部的目錄項代表國家 , 下面的目錄項可能代表州或者國家機關(guān) , 再下面可能是代表單位 、 人 、打印機 、 文檔或者任何其它可能的對象 。 圖 17顯示了一棵使用傳統(tǒng)命名機制的 LDAP目錄樹 。 c = USst = C a l i f or ni ao = A c m eou = S a l e ou = M a r ke t i ng = B a r ba r a J e ns e nT he O r ga ni z a t i onO r ga ni z a t i ona l U ni tP e r s o nc = GB圖 17 LDAP目錄樹 (Traditional Naming) 樹同樣也可以按照因特網(wǎng)域名來排列 。 由于我們可以利用域名系統(tǒng)來定位目錄服務(wù) , 因而采用域名的命名方法變得越來越流行 。 圖 18顯示了一棵利用域名機制的 LDAP目錄樹 。 dc = DEdc = e xam p l eou = P e op l e ou = S e r ve rui d = B absT h e O r ga ni z a t i onO r ga ni z a t i on a l U ni tP e r s ondc = ne t dc = c om圖 18 LDAP目標樹 (Inter Naming) 此外 , LDAP允許我們控制目錄項所需的以及可用的屬性 , 這通常是通過稱為 objectClass的特殊屬性來完成的 。 屬性 objectClass確定了目錄項必須遵循的模式(schema)規(guī)則 。 2. 信息的引用 一個目錄項通過可識別名 DN來引用 , 可識別名通過把 自身目錄項名字 (稱為相對可識別名 (RDN))同其祖先目錄項名字連接起來來構(gòu)造 。 例如在上述因特網(wǎng)命名例子中 , 目錄項 Barbara Jensen的 RDN為: uid=Babs和一個 DN: uid=Babs, ou=People, dc=example, dc=。整個 DN的格式在 RFC2253中有詳細描述 。 3. 信息的訪問 LDAP定義了訪問和更新目錄項的操作 。 LDAP支持下列操作: “ search”、 “ add”、 “ delete”、 “ modify”、“ modify RDN”、 “ bind”、 “ unbind”和 “ abandon”操作 。 “ search”操作包含搜索對象 、 范圍和過濾器等幾個參數(shù) 。 基本對象和范圍決定從查詢樹中的哪一部分開始查詢 。 過濾器則用來在選擇的范圍內(nèi)指出符合查詢條件的目錄項 。 LDAP對查詢時間和查詢數(shù)量大小的限制直接包含在查詢請求里 , 查詢結(jié)果一次性返回給客戶端 。 LDAP的 “ modify”操作通過三種方法 “ 增加值 ” 、“ 刪除值 ” 、 “ 替代值 ” 簡化了 “ modify”操作 。 當對一個不存在的屬性增加值時 , 該操作自動地創(chuàng)建這個屬性 。 當請求刪除一個屬性的最后一個值時 , 則自動刪除整個屬性 。 LDAP的“ bind”操作是 “ bind”操作功能的子集,它僅使用簡單的驗證方式,如口令等。“ unbind”、“ abandon”、“ modify RDN”、“ add”、“ delete”等操作則和 DAP中的操作相同。這些操作的功能從它們的名字可以很容易地看出,這里就不再贅述。 4. 信息的保護 某些目錄服務(wù)沒有任何保護 , 允許任何人訪問 。LDAP提供了一種機制允許客戶向目錄服務(wù)器來認證自己的身份 , 以獲得更多的訪問權(quán)限 。 LDAP也支持保密性和完整性服務(wù) 。 LDAP協(xié)議是基于客戶 /服務(wù)器模式的 。 客戶向服務(wù)器提出查詢請求 , 服務(wù)器負責在目錄上進行必要的操作 。 在完成了必要的操作后 , 服務(wù)器將向客戶返回一個應(yīng)答 。 這個應(yīng)答要么包含查詢結(jié)果 , 要么包含錯誤信息 。 服務(wù)器和客戶在實現(xiàn)上并不要求同步 , 也就是說 , 在服務(wù)器和客戶間可能以任意順序交換請求 、 應(yīng)答 , 只要客戶的每個請求都收到應(yīng)答就可以了 。 對于同一請求 , 客戶無論連接到哪一個服務(wù)器 , 獲得的結(jié)果應(yīng)該是一樣的 。 CA操作步驟 當用戶提出證書申請時 , 它利用瀏覽器連接到安全服務(wù)器 ——RA操作員 , 然后發(fā)送這個請求 。 用戶必須提供能夠標識他自己的用戶信息 , 然后 RA操作員把這個請求通過安全連接傳遞給 RA服務(wù)器 。 RA服務(wù)器會處理這個申請 , 并準備提交給 CA進行簽名 。 現(xiàn)在 , RA服務(wù)器的管理人員把證書申請文件通過安全渠道送到 CA, 由 CA對申請按照本 CA的管理章程進行審核 , 如果許可則完成最后的證書簽名以及制作 。CA再通過安全途徑把證書遞交給 RA服務(wù)器 。 此時 ,RA服務(wù)器把證書導入到 LDAP目錄服務(wù)器 , 可供他人查詢等 。 證書鏈構(gòu)造 CA的層次結(jié)構(gòu)可被映射為證書鏈,一條證書鏈是后續(xù) CA發(fā)行的證書序列。 圖 19表示了一個證書鏈:從最下面的待驗證證書通過兩級子 CA到達根 CA。 一條證書鏈對始于層次分支 ,終止于層次頂部的證書路徑進行跟蹤 。 在證書鏈中: ● 每個證書的下一級證書是發(fā)行者的證書 。 ● 每個證書包含證書發(fā)行者的可識別名 , 該名字同證書鏈中的下一證書的主體名字相同 。 在圖 19中 ,Engineering CA證書包含了 CN CA的 DN。 CN CA的 DN也是證書鏈的下一個證書 (由 Root CA簽發(fā) )的主體名字 。 ● 每個證書由發(fā)行者的私鑰進行簽名 。 該簽名可以用發(fā)行者證書 (證書鏈的下一個證書 )上的公鑰進行驗證 。CN CA證書當中的公鑰可以用來驗證 Engineering CA證書上的數(shù)字簽名 。 A s i a C A自己簽發(fā)信任授權(quán)E u C A C N C AR oot C AS a l e s C A M a r ke t i ng C A E ngi ne e r i ng C A由 R oot C A簽發(fā)信任授權(quán)由 C N C A簽發(fā) 不信任授權(quán)驗證證書程序由 E ngi ne er i ng C A簽發(fā)信任授權(quán)圖 19 證書鏈 證書驗證過程 證書鏈驗證就是確保給定的證書鏈是有效 、 可信 、正確簽名的 。 我們下面以 Netscape瀏覽器所采用的證書鏈驗證過程為例 , 驗證過程如圖 20所示 。 (1) 首先根據(jù)系統(tǒng)時鐘對證書的有效期進行檢查 。 (2) 發(fā)行者證書定位 。 這可能是本地證書庫或者由主體提供的證書鏈 。 (3) 根據(jù)發(fā)行者證書的公鑰驗證證書簽名 。 (4) 如果發(fā)行者證書可信 , 驗證成功 , 否則檢查發(fā)行者證書 , 獲得下一級 CA指示 , 并以發(fā)行者證書作為新的驗證對象 , 回到 (1)繼續(xù)驗證 。 圖 20顯示的是本地數(shù)據(jù)庫只包含 Root CA證書的情形 。如果還包含某個中間可信 CA證書 , 例如 Engineering CA, 那么驗證只需到該證書為止 。 R oo t C A證書C N C A證書可信任認證中心不信任認證中心檢 查有效周期,驗證該證書由 R oo t C A簽發(fā)。由于 R oo t可信,驗證到此為止E ng i nee r i ng C A 證書不信任認證中心檢查有效周期,驗證該證書由 C N C A簽發(fā)。由于 C N C A不可信,檢查下一個證書驗證證書程序由 E ng i nee r i ngCA 頒發(fā)的證書檢查有效周期,驗證該證書由 E ng i nee r i ngCA 簽發(fā)。由于 E ng i nee r i ng C A不可信,檢查下一個證書圖 20 驗證證書鏈直到 Root CA