執行所有步驟保護伺服器的安全性之後,即可為用戶端設定其他安全性需求。
用戶端認證對於 SSL 連線並非必要,但卻能加強確保加密資訊能傳送給正確的收件人。您可以在反向代理伺服器中使用用戶端認證,以確定您的內容伺服器不會與未經授權的代理伺服器或用戶端共用資訊。
本小節包含以下主題:
您可以為 Administration Server 和每個伺服器實例啟用偵聽通訊端,以要求用戶端認證。啟用用戶端認證時,需要提供用戶端憑證,然後伺服器才能針對查詢傳送回應。
Proxy Server 支援的用戶端憑證認證方式,是將用戶端憑證中的 CA,與可信任 CA (能簽署用戶端憑證) 加以比對。您可以藉由 [Security] 標籤,在 [Manage Certificates] 頁面上檢視可信任 CA (能簽署用戶端憑證) 的清單。
您可以對 Proxy Server 進行配置,拒絕不具有來自可信任 CA 用戶端憑證的所有用戶端。若要接受或拒絕信任的 CA,必須為 CA 設定用戶端信任。如需更多資訊,請參閱管理憑證。
若憑證已過期,Proxy Server 會記錄錯誤、拒絕憑證並向用戶端傳回訊息。您也可以在 [Manage Certificates] 頁面上檢視哪些憑證已經過期。
您可以對伺服器進行配置,以便從用戶端憑證收集資訊並使其與 LDAP 目錄中的使用者項目匹配。此程序可以確定用戶端具有有效的憑證,且在 LDAP 目錄中有對應項目。而且還可以確定用戶端憑證與 LDAP 目錄中的憑證相匹配。若要瞭解如何執行此操作,請參閱將用戶端憑證對映到 LDAP。
您可以將用戶端憑證和存取控制結合使用,以便除了來自可信任的 CA 以外,與憑證關聯的使用者還必須與存取控制規則 (ACL) 相匹配。如需更多資訊,請參閱使用存取控制檔案。
存取 Administration Server 或 Server Manager,然後按一下 [Preferences] 標籤。
按一下 [Edit Listen Sockets] 連結。
按一下要求用戶端認證的偵聽通訊端連結。
使用 [Client Authentication] 下拉式清單要求針對偵聽通訊端進行用戶端認證,然後按一下 [OK]。
在反向代理伺服器中,您可以根據下列任一分析藍本配置用戶端認證:
Proxy-Authenticates-Client。在此分析藍本下,您可允許具有可接受憑證的所有用戶端進行存取,或是僅允許具有可接受憑證,且為 Proxy Server 存取控制清單上可辨識之使用者的用戶端進行存取。
代理伺服器必須具有 CA 的使用者根金鑰,或已簽署使用者憑證之自我簽署應用程式的使用者根金鑰。使用者必須已載入 CA 的 Proxy Server 根金鑰,或已簽署 Proxy Server 憑證之自我簽署應用程式的 Proxy Server 根金鑰。
Content-Server-Authenticates-Proxy。在此分析藍本下,您可確保內容伺服器是連接至 Proxy Server 而非其他伺服器。
代理伺服器必須具有 CA 的內容伺服器根金鑰,或已簽署內容伺服器憑證之自我簽署應用程式的內容伺服器根金鑰。內容伺服器必須具有 CA 的 Proxy Server 根金鑰,或已簽署 Proxy Server 憑證之自我簽署應用程式的 Proxy Server 根金鑰。
Proxy-Authenticates-Client and Content-Server-Authenticates-Proxy。此分析藍本可為您的反向代理伺服器提供最佳的安全性和認證。
如需有關如何配置這些分析藍本的資訊,請參閱在反向代理伺服器中設定用戶端認證。
安全反向代理伺服器中的用戶端認證可以進一步確保連線的安全。下列指示說明如何根據所選擇的分析藍本配置用戶端認證。
每個分析藍本都假設您同時具有安全的用戶端至代理伺服器連線,以及代理伺服器至內容伺服器連線。
請依照第 14 章使用反向代理伺服器中「設定反向代理伺服器」的指示,配置安全的用戶端至代理伺服器以及安全的代理伺服器至內容伺服器分析藍本。
從 Server Manager 存取伺服器實例,然後按一下 [Preferences] 標籤。
按一下 [Edit Listen Sockets] 連結,然後在所顯示的表格中,按一下所需偵聽通訊端的連結。
(使用 [Add Listen Socket] 連結可配置和增加偵聽通訊端。)
指定用戶端認證需求:
若要允許具有有效憑證之所有使用者進行存取,請執行下列操作:
在 [Security] 區段中,使用 [Client Authentication] 設定來要求對此偵聽通訊端進行用戶端認證。如果尚未安裝伺服器憑證,則不會顯示此設定。
若要僅允許具有有效憑證,且在存取控制中指定為可接受使用者的使用者進行存取,請執行下列操作:
在 [Security] 區段中,保持 [Client Authentication] 設定為關閉狀態。如果尚未安裝伺服器憑證,則不會顯示此設定。
在此伺服器實例的 Server Manager [Preferences] 標籤上,按一下 [Administer Access Control] 連結。
選取 [ACL],然後按一下 [Edit] 按鈕。
此時會顯示 [Access Control Rules For] 頁面 (若出現提示則請先認證)。
開啟存取控制 (若尚未選取 [Access control Is On] 核取方塊,請加以選取)。
將 Proxy Server 設定為以反向代理伺服器身分進行認證。
如需更多資訊,請參閱設定反向代理伺服器。
在所需的存取控制規則上按一下 [Rights] 連結,於下方框架內指定存取權限,然後按一下 [Update] 更新此項目。
按一下 [Users/Groups] 連結。在下方框架中,指定使用者和群組、選取 SSL 做為認證方法,然後按一下 [Update] 更新此項目。
在上方框架中按一下 [Submit] 以儲存項目。
如需有關設定存取控制的更多資訊,請參閱第 8 章控制對伺服器的存取。
請依照設定反向代理伺服器中的指示,配置安全的用戶端至代理伺服器以及安全的代理伺服器至內容伺服器分析藍本。
在內容伺服器上開啟用戶端認證。
您可以修改此分析藍本,建立用戶端與 Proxy Server 之間的不安全連線,以及與內容伺服器的安全連線,這樣內容伺服器便會對此 Proxy Server 進行認證。若要執行上述操作,必須關閉加密功能,並要求代理伺服器僅依照以下所述的程序初始化憑證。
請依照配置 Proxy-Authenticates-Client 分析藍本中的指示,配置 Proxy-Authenticates-Client 分析藍本。
在內容伺服器上開啟用戶端認證。
本小節說明 Proxy Server 採用何種程序,將用戶端憑證對映至 LDAP 目錄中的項目。將用戶端憑證對映至 LDAP 之前,還必須配置必要的 ACL。如需更多資訊,請參閱第 8 章控制對伺服器的存取。
伺服器收到來自用戶端的請求時,會在處理前索取用戶端的憑證。某些用戶端會在向伺服器傳送申請的同時傳送用戶端憑證。
伺服器將嘗試檢視該 CA 是否與 Administration Server 中的某個可信任 CA 匹配。如果不存在相符的項目,Proxy Server 將會結束連線。如果存在相符的項目,伺服器將繼續處理請求。
伺服器驗證憑證是來自可信任的 CA 之後,便會透過執行下列操作將憑證對映至 LDAP 項目:
將核發者和主體 DN 從用戶端憑證對映至 LDAP 目錄中的分支點。
在 LDAP 目錄中,搜尋與用戶端憑證的主體 (一般使用者) 相關資訊相符的項目。
(可選) 驗證用戶端憑證是否與 LDAP 項目中對應於 DN 的憑證相符。
伺服器使用憑證對映檔案 (稱為 certmap.conf) 來確定 LDAP 搜尋的執行方式。對映檔案將告知伺服器要採用用戶端憑證中的哪些值,如一般使用者名稱、電子郵件地址等。伺服器將使用這些值來搜尋 LDAP 目錄中的使用者項目,但伺服器必須先確定要從 LDAP 目錄中的何處開始搜尋。憑證對映檔案也會告訴伺服器開始搜尋的位置。
一旦伺服器知道從何處開始搜尋以及所搜尋的內容之後,便會在 LDAP 目錄 (第二個點) 中執行搜尋。如果找不到任何相符項目或找到多個相符項目,並且未設定對映必須驗證憑證,則搜尋將會失敗。
下表列出了預期的搜尋結果運作方式。您可以在 ACL 中指定預期的運作方式。例如,您可以指定找不到相符憑證時,Proxy Server 就只接受您。如需有關如何設定 ACL 喜好設定的更多資訊,請參閱使用存取控制檔案。
表 5–1 LDAP 搜尋結果
LDAP 搜尋結果 |
憑證驗證「開啟」 |
憑證驗證「關閉」 |
---|---|---|
未找到項目 |
認證失敗 |
認證失敗 |
恰好找到一個項目 |
認證失敗 |
認證成功 |
找到多個項目 |
認證失敗 |
授權失敗 |
伺服器在 LDAP 目錄中找到相符的項目和憑證之後,即可使用該資訊處理作業事件。例如,某些伺服器使用憑證到 LDAP 的對映來確定對某個伺服器的存取權限。
憑證對映用於確定伺服器在 LDAP 目錄中查找使用者項目的方式。您可以使用 certmap.conf 檔案來配置將憑證 (依名稱指定) 對映至 LDAP 項目的方式。您可以編輯此檔案並增加項目,以便與 LDAP 目錄的組織相符,並列出您希望使用者擁有的憑證。您可根據 subjectDN 中所使用的使用者 ID、電子郵件地址或其他值,對使用者進行認證。特別是,對映檔案可定義以下資訊:
伺服器應從 LDAP 樹狀結構中開始搜尋的位置
在 LDAP 目錄中進行搜尋時,伺服器應該做為搜尋條件的憑證屬性
伺服器是否要執行其他驗證程序
server-root/userdb/certmap.conf
該檔案包含了一個或多個已命名對映,每個對映都套用於不同的 CA。對映具有下列語法:
certmap name issuerDNname :property [ value]
第一行用於指定項目的名稱以及形成 CA 憑證中區別名稱的屬性。name 為任意名稱,可依照您的喜好加以定義。不過,issuerDN 必須與核發用戶端憑證之 CA 的核發者 DN 完全相符。例如,以下兩個核發者 DN 行僅在分隔屬性的空格上有所差異,但伺服器將其視為兩個不同的項目:
certmap sun1 ou=Sun Certificate Authority,o=Sun,c=UScertmap sun2 ou=Sun Certificate Authority, o=Sun, c=US
如果您使用的是 Sun Java System Directory Server,在確定核發者 DN 符合情況遇到問題時,請檢查 Directory Server 錯誤記錄以取得有用的資訊。
已命名對映中的第二行和隨後的行可以使屬性與值相匹配。certmap.conf 檔案具有六項預設特性。您也可以使用憑證 API 來自訂特性。預設特性為:
DNComps 是逗號分隔的屬性清單,用於確定伺服器從 LDAP 目錄中的何處開始搜尋與使用者 (即用戶端憑證的所有者) 資訊相符的項目。伺服器從用戶端憑證中收集這些屬性的值,並用這些值形成 LDAP DN,然後即可確定伺服器從 LDAP 目錄的哪個位置開始搜尋。例如,如果 DNComps 設定為要使用 DN 的 o 和 c 屬性,伺服器就會從 LDAP 目錄中的 o=org, c= country 項目開始搜尋,其中 org 和 country 會以憑證中 DN 的值替代。
請注意以下情形:
如果對映中沒有 DNComps 項目,則伺服器會使用 CmapLdapAttr 設定或用戶端憑證中的整個主體 DN,也就是一般使用者的資訊。
如果 DNComps 項目存在但沒有對應的值,伺服器將在整個 LDAP 樹狀結構中搜尋與篩選器相符的項目。
FilterComps 是逗號分隔的屬性清單,藉由收集用戶端憑證中使用者 DN 的資訊來建立篩選器。伺服器將使用這些屬性的值,以形成匹配 LDAP 目錄中各項目的搜尋條件。如果伺服器在 LDAP 目錄中找到的一個或多個項目,與從憑證中收集到的使用者資訊相符,則表示搜尋成功,且伺服器選擇性地執行驗證。
例如,如果將 FilterComps 設定為要使用電子郵件地址和使用者 ID 屬性 (FilterComps=e,uid),伺服器會在目錄中搜尋這樣的項目:其電子郵件及使用者 ID 值與從用戶端憑證所收集的一般使用者資訊相符合。電子郵件地址和使用者 ID 是很好的篩選器,因為它們在目錄中通常是唯一的項目。篩選器必須夠具體,才能在 LDAP 資料庫中找到一個 (且只有一個) 符合項目。
篩選器的屬性名稱必須是來自憑證 (而非來自 LDAP 目錄) 的屬性名稱。例如,某些憑證以 e 屬性代表使用者的電子郵件地址,而 LDAP 將此屬性稱為 mail。
下表列出了 x509v3 憑證的屬性。
屬性 |
說明 |
---|---|
國家/地區 |
|
組織 |
|
共用名稱 |
|
位置 |
|
狀態 |
|
組織單元 |
|
UNIX/Linux 使用者 ID |
|
電子郵件地址 |
verifycert 會告知伺服器是否應將用戶端憑證與 LDAP 目錄中的憑證相比對。此特性採用以下兩個值:[on] 和 [off]。只有當 LDAP 目錄中包含憑證時才使用此特性。此功能有助於確定一般使用者所具有的憑證是否有效且未被撤銷。
CmapLdapAttr 是 LDAP 目錄中包含使用者全部憑證之主體 DN 的屬性名稱。該特性的預設值為 certSubjectDN。該屬性不是標準的 LDAP 屬性,因此要使用該特性,您必須延伸 LDAP 模式。如需更多資訊,請參閱「SSL 簡介」。
如果 certmap.conf 檔案中存在此特性,伺服器將在整個 LDAP 目錄中,搜尋其屬性 (以此特性命名) 與主體之完整 DN (從憑證中取得) 相符的項目。如果找不到任何項目,伺服器會使用 DNComps 和 FilterComps 對映重試搜尋。
如果使用 DNComps 和 FilterComps 進行項目比對非常困難,這就是比對憑證和 LDAP 項目的實用方式。
如需有關這些特性的更多資訊,請參閱對映範例中所述範例。
用戶端憑證 API 可用來建立您自己的特性。建立自訂對映後,就可以參照以下格式的對映:
name:library path_to_shared_libraryname :InitFN name_of_ init_function
例如︰
certmap default1 o=Sun Microsystems, c=US default1:library /usr/sun/userdb/plugin.so default1:InitFn plugin_init_fn default1:DNComps ou o c default1:FilterComps l default1:verifycert on
certmap.conf 檔案中應至少包含一個項目。下列範例說明了 certmap.conf 的不同使用方式。
certmap default defaultdefault:DNComps ou, o, cdefault:FilterComps e, uiddefault:verifycert on
以此為例,伺服器在包含 ou=orgunit, o=org, c=country 項目的 LDAP 分支點開始搜尋,其中斜體文字將由用戶端憑證中主體 DN 的值所替代。
然後,伺服器會使用憑證上電子郵件地址和使用者 ID 的值,在 LDAP 目錄中搜尋相符的項目。找到相符的項目時,伺服器會比對用戶端傳送的憑證與儲存在目錄中的憑證,以驗證該憑證。
以下範例檔案中包括兩個對映:一個用於預設,另一個用於美國郵政局。
certmap default defaultdefault:DNCompsdefault:FilterComps e, uid
certmap usps ou=United States Postal Service, o=usps, c=USusps:DNComps ou,o,cusps:FilterComps eusps:verifycert on
伺服器收到美國郵政局以外的人傳來憑證時會使用預設對映,該對映會從 LDAP 樹狀結構的頂層開始,搜尋與用戶端電子郵件地址和使用者 ID 相符的項目。如果憑證來自美國郵政服務,則伺服器會從包含組織單位的 LDAP 分支開始搜尋相符的電子郵件地址。此外,伺服器還會驗證該憑證。其他憑證則不加以驗證。
憑證中的核發者 DN (即 CA 的資訊) 必須與對映第一行中所列的核發者 DN 相同。在前一個範例中,來自核發者 DN (即 o=United States Postal Service,c=US) 的憑證就不相符,因為 DN 中 o 和 c 屬性之間沒有空格。
下列範例使用 CmapLdapAttr 特性在 LDAP 資料庫中搜尋名為 certSubjectDN 的屬性,該屬性的值與用戶端憑證中的整個主體 DN 完全相符。本範例假設 LDAP 目錄中包含具有 certSubjectDN 屬性的項目。
certmap myco ou=My Company Inc, o=myco, c=USmyco:CmapLdapAttr certSubjectDNmyco:DNComps o, c myco:FilterComps mail, uid myco:verifycert on
如果用戶端憑證的主題為:
uid=Walt Whitman, o=LeavesOfGrass Inc, c=US
伺服器將首先搜尋包含以下資訊的項目:
certSubjectDN=uid=Walt Whitman, o=LeavesOfGrass Inc, c=US
如果找到一個或多個匹配的項目,伺服器將繼續驗證各項目。如果找不到相符的項目,伺服器會使用 DNComps 和 FilterComps 來搜尋相符的項目。在本範例中,伺服器會在 o=LeavesOfGrass Inc, c=US 之下的所有項目中搜尋 uid=Walt Whitman。