Sun Java System Application Server Enterprise Edition 8.2 管理指南

憑證和 SSL 簡介

本節論述以下主題:

關於數位憑證

數位憑證 (或簡稱憑證) 是在網際網路上唯一識別人員和資源的電子檔案。憑證還可以使兩個實體之間能夠進行安全、機密的通訊。

憑證有很多種類型,例如個人憑證 (由個人使用) 和伺服器憑證 (用於透過安全套接字層 [SSL] 技術在伺服器和使用者端之間建立安全階段作業)。如需有關 SSL 的更多資訊,請參閱關於安全套接字層

憑證以公開金鑰密碼學為基礎,公開金鑰密碼學使用數位金鑰 (很長的數位) 對資訊進行加密或編碼,從而使資訊只能被指定的接收者讀取。然後,接收者對資訊進行解密 (解碼),即可讀取該資訊。

一個金鑰對包含一個公開金鑰和一個私密金鑰。所有者對公開金鑰進行發放並使任何人都可以使用該公開金鑰。但是所有者永遠不會發放私密金鑰;私密金鑰始終是保密的。由於金鑰與數學相關,因此使用了金鑰對中的一個金鑰進行加密的資料只能透過金鑰對中的另一個金鑰進行解密。

憑證就好像一本護照:它可以識別持有者並提供其他重要資訊。憑證由稱為憑證授權單位 (CA) 的可信任的協力廠商發行。CA 類似於護照申領辦公室:它將驗證憑證持有者的身份並對憑證進行簽署,以使他人無法偽造或竄改憑證。CA 對憑證進行簽署之後,持有者可以提供該憑證做為身份證明並建立加密的機密通訊。

最重要的是,憑證會將所有者的公開金鑰連結至所有者身份。與護照將照片連結至其持有者的個人資訊類似,憑證將公開金鑰連結至有關其所有者的資訊。

除了公開金鑰以外,憑證通常還包括以下資訊:

數位憑證受 x.509 格式的技術規格約束。若要驗證 certificate 範圍中某個使用者的身份,認證服務將使用 X.509 憑證的一般名稱欄位做為主體名稱對 X.509 憑證進行驗證。

關於憑證鏈

Web 瀏覽器已預先配置了一組瀏覽器自動信任的 CA 憑證。來自其他憑證授權單位的所有憑證都必須附帶憑證鏈,以驗證這些憑證是否有效。憑證鏈是由連續 CA 憑證發行的憑證序列,最終以根 CA 憑證結束。

憑證最初產生時是自簽署憑證。自簽署憑證是其發行者 (簽署者) 與主旨 (其公開金鑰由該憑證進行認證的實體) 相同的憑證。如果所有者向 CA 傳送憑證簽署請求 (CSR),然後輸入回應,自簽署憑證將被憑證鏈取代。鏈的底部是由 CA 發行的、用於認證主旨的公開金鑰憑證 (回覆)。鏈中的下一個憑證是認證 CA 公開金鑰的憑證。通常,這是一個自簽署憑證 (即,來自 CA、用於認證其自身公開金鑰的憑證),並且是鏈中的最後一個憑證。

在其他情況下,CA 可能會傳回一個憑證鏈。在此情況下,鏈的底部憑證是相同的 (由 CA 簽署的憑證,用於認證金鑰項目的公開金鑰),但是鏈中的第二個憑證是由其他 CA 簽署的憑證,用於認證您向其傳送了 CSR 的 CA 的公開金鑰。然後,鏈中的下一個憑證是用於認證第二個 CA 金鑰的憑證,依此類推,直至到達自簽署的憑證。因此,鏈中的每個憑證 (第一個憑證之後的憑證) 都需要認證鏈中前一個憑證的簽署者的公開金鑰。

關於安全套接字層

安全套接字層 (SSL) 是用於確定網際網路通訊和作業事件保護的最常見標準。Web 應用程式使用 HTTPS (基於 SSL 的 HTTP),HTTPS 使用數位憑證來確保在伺服器和使用者端之間進行安全、機密的通訊。在 SSL 連線中,使用者端和伺服器在傳送資料之前都要對資料進行加密,然後由接受者對其進行解密。

Web 瀏覽器 (用戶端) 需要與某個安全站點建立連線時,則會發生 SSL 交換

交握之後,即表示使用者端已驗證了網站的身份,並且只有該使用者端和 Web 伺服器擁有該階段作業金鑰副本。從現在開始,使用者端和伺服器便可以使用該階段作業金鑰對彼此間的所有通訊進行加密。這樣就確保了使用者端和伺服器之間的通訊的安全。

SSL 標準的最新版本稱為 TLS (傳輸層安全性)。Application Server 支援安全套接字層 (SSL) 3.0 和傳輸層安全性 (TLS) 1.0 加密協定。

若要使用 SSL,Application Server 必須擁有接受安全連線的每個外部介面或 IP 位址的憑證。只有安裝了數位憑證之後,大多數 Web 伺服器的 HTTPS 服務才能夠執行。請使用使用 keytool 公用程式產生憑證中說明的程序來設定 Web 伺服器可以用於 SSL 的數位憑證。

關於加密算法

加密算法是用於加密或解密的加密演算法。SSL 和 TLS 協定支援用於伺服器和使用者端彼此進行認證、傳輸憑證和建立階段作業金鑰的各種加密算法。

某些加密算法比其他加密算法更強大且更安全。使用者端和伺服器可以支援不同的密碼組。從 SSL3 和 TLS 協定中選取加密算法。在安全連線期間,使用者端和伺服器同意在通訊中使用它們均已啟用的最強大的加密算法,因此通常需要啟用所有加密算法。

使用基於名稱的虛擬主機

對安全應用程式使用基於名稱的虛擬主機可能會帶來問題。這是 SSL 協定本身的設計限制。必須先進行 SSL 交握 (使用者端瀏覽器在此時接受伺服器憑證),然後才能存取 HTTP 請求。這樣,在認證之前就無法確定包含虛擬主機名稱的請求資訊,因此也不能將多個憑證指定給單一 IP 位址。

如果單一 IP 位址上的所有虛擬主機均需要對照同一憑證進行認證,則增加多個虛擬主機將不會影響伺服器上正常的 SSL 作業。但是請注意,大多數瀏覽器會將伺服器的網域名稱與憑證中列示的網域名稱 (如果有,且主要適用於官方 CA 簽署憑證) 進行對照。如果網域名稱不相符,這些瀏覽器將顯示警告。通常在生產環境中,只將基於位址的虛擬主機與 SSL 配合使用。