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

第 9 章 配置安全性

安全性實質上就是資料保護:如何在儲存或傳輸資料時防止對資料進行未授權的存取或紐a。Application Server 具有基於 J2EE 標準的動態可延伸安全性架構。它內置的安全性功能包括密碼學、認證與授權以及公開金鑰基礎架構。Application Server 是基於 Java 安全性模型建置的,該安全性模型使用了一個沙箱,應用程式可以在沙箱中安全地執行,而不會給系統或使用者帶來潛在的危險。本節論述以下主題:

瞭解應用程式和系統安全性

從廣泛意義上講,應用程式安全性有兩種:

除了應用程式安全性以外,還有影響 Application Server 系統中所有應用程式的系統安全性

程式安全性受應用程式開發者的控制,因此本文件不對其進行論述;宣告性安全性受應用程式開發者的控制要少一些,本文件中只偶爾涉及到宣告性安全性。本文件主要針對系統管理員,因此主要論述系統安全性。

管理安全性的工具

Application Server 提供了以下用於管理安全性的工具:

Java 2 Platform, Standard Edition (J2SE) 提供了兩個用於管理安全性的工具:

如需有關使用 keytoolpolicytool 和其他 Java 安全性工具的更多資訊,請參閱位於以下位置的「Java 2 SDK Tools and Utilities」:http://java.sun.com/j2se/1.4.2/docs/tooldocs/tools.html#security

在 Enterprise Edition 中,還可以使用另外兩個實作網路安全服務 (NSS) 的工具來管理安全性。如需有關 NSS 的更多資訊,請至 http://www.mozilla.org/projects/security/pki/nss/。用於管理安全性的工具包括:

如需有關使用 certutilpk12util 和其他 NSS 安全性工具的更多資訊,請參閱位於以下位置的「NSS Security Tools」:http://www.mozilla.org/projects/security/pki/nss/tools

管理密碼安全性

在 Application Server 的此發行版本中,包含特定網域規格的 domain.xml 檔案最初包含純文字形式的 Sun Java System Message Queue 代理程式密碼。domain.xml 檔案中包含此密碼的元素為 jms-host 元素的 admin-password 屬性。由於在安裝期間不能變更此密碼,因此它不會對安全性產生很大的影響。

但是,您可以使用 Administration Console 增加使用者和資源,並為這些使用者和資源指定密碼。部分密碼將以純文字形式寫入 domain.xml 檔案,例如用於存取資料庫的密碼。將這些純文字形式的密碼保存在 domain.xml 檔案中可能會破壞安全性。您可以對 domain.xml 中的任何密碼進行加密,包括 admin-password 屬性或資料庫密碼。下列主題中包含有關安全性密碼的管理說明:

domain.xml 檔案中的密碼進行加密

若要對 domain.xml 檔案中的密碼進行加密,請依照下列步驟執行:

  1. domain.xml 檔案常駐的目錄 (依預設,此目錄為 domain-dir/config) 中,執行以下 asadmin 指令:


    asadmin create-password-alias --user admin alias-name
    

    例如,


    asadmin create-password-alias --user admin jms-password

    螢幕將顯示輸入密碼提示 (在本範例中為 admin)。請參閱 create-password-aliaslist-password-aliasesdelete-password-alias 指令的線上手冊,以取得更多資訊。

  2. 移除並替代 domain.xml 中的密碼。使用 asadmin set 指令可以完成此作業。使用 set 指令實現此目的的範例如下:


    asadmin set --user admin server.jms-service.jms-host.
    default_JMS_host.admin-password='${ALIAS=jms-password}'

    備註 –

    將別名密碼以單引號括住,如範例所示。


  3. 重新啟動相關網域的 Application Server。

保護具有編碼密碼的檔案

某些檔案包含需要使用檔案系統許可權進行保護的編碼密碼。這些檔案包括:

變更主密碼

主密碼 (MP) 是全局性的共用密碼。它從不用於認證,也從不會在網路上傳輸。此密碼是全局安全性的要塞點;使用者可以選擇在需要時手動輸入此密碼,也可以將其隱藏在檔案中。它是系統中最敏感的資料。使用者可以透過移除此檔案強制系統提示輸入 MP。主密碼變更時,會重新儲存在主密碼金鑰庫中,也就是 Java JCEKS 類型金鑰庫。

若要變更主密碼,請執行下列步驟:

  1. 停止網域的 Application Server。使用 asadmin change-master-password 指令會提示輸入舊密碼和新密碼,然後重新加密所有附屬項目。例如︰


    asadmin change-master-password>
    Please enter the master password>
    Please enter the new master password>
    Please enter the the new master password again>
  2. 重新啟動 Application Server。


    注意 – 注意 –

    此時,不能啟動正在執行的伺服器實例並且不能重新啟動正在執行的伺服器實例,除非已變更這些實例所對映的節點代理程式上的 SMP。如果在變更伺服器實例的 SMP 之前重新啟動了該伺服器實例,它將無法啟動。


  3. 一次停止一個節點代理程式及其相關伺服器。再次執行 asadmin change-master-password 指令,然後重新啟動節點代理程式及其相關伺服器。

  4. 繼續對下一個節點代理程式執行這些步驟,直到對所有節點代理程式均已執行這些步驟。這樣可以完成輪替變更。

使用主密碼和金鑰庫

主密碼是安全金鑰庫的密碼。建立新的應用程式伺服器網域之後,即會產生新的自我簽署憑證,並將其儲存在使用主密碼鎖定的相關金鑰庫中。如果主密碼並非預設,start-domain 指令會提示您輸入主密碼。輸入正確的主密碼之後,網域就會啟動。

建立與網域相關聯的節點代理程式之後,節點代理程式就會將資料與網域進行同步化。執行此項作業的同時,還會將金鑰庫同步化。任何由此節點代理程式控制的伺服器實例都必須開啟金鑰庫。由於此金鑰庫基本上和網域建立程序所建立的金鑰庫相同,因此只能由相同的主密碼開啟。但是主密碼本身永遠都不會同步化;意即在同步化期間,並不會將主密碼傳送到節點代理程式,但它必須可供節點代理程式在本機使用。這就是在建立和/或啟動節點代理程式時會提示您輸入主密碼的原因,而您所輸入的密碼,必須和您在建立/啟動網域時所輸入的密碼相同。若網域的主密碼有所變更,則必須執行相同的步驟,在每個和此網域相關聯的節點代理程式上變更主密碼。

變更管理員密碼

管理密碼安全性中論述了如何加密管理員密碼。強烈建議您加密管理員密碼。若要在加密管理員密碼之前變更管理員密碼,請使用 asadmin set 指令。使用 set 指令實現此目的的範例如下:


asadmin set --user admin server.jms-service.jms-host.default_JMS_host.admin-password=new_pwd

還可以使用 Administration Console 變更管理員密碼,如以下程序所示。

若要使用 Admin Console 變更管理員密碼,請選取 [配置] 節點 >要配置的實例 > [安全性] 節點 > [範圍] 節點 > [admin-realm] 節點,並視需要編輯範圍頁面。

關於認證與授權

認證與授權是應用程式伺服器安全性的核心概念。以下主題論述了與認證和授權相關的內容:

認證實體

認證是實體 (使用者、應用程式或元件) 用於確定其他實體是否是其宣告的實體的方法。實體使用安全性憑證對其自身進行認證。憑證可以是使用者名稱和密碼、數位憑證或其他憑證。

通常,認證表示使用者使用使用者名稱和密碼登入某個應用程式;也可以指 EJB 從伺服器請求資源時,提供安全性憑證。通常,伺服器或應用程式要求使用者端進行認證;另外,使用者端也可以要求伺服器對其自身進行認證。如果認證是雙向的,則稱為相互認證。

當實體嘗試存取受保護的資源時,Application Server 將使用為該資源配置的認證機制來確定是否授予存取權。例如,使用者可以在 Web 瀏覽器中輸入使用者名稱和密碼,如果應用程式順利完成了對這些憑證的驗證,則表示該使用者已通過認證。在此階段作業的剩餘時間內,該使用者將始終與這個經過認證的安全性身份相關聯。

Application Server 支援四種類型的認證,如認證實體所示。應用程式在其部署描述元中指定所使用的認證類型。如需有關使用 deploytool 配置應用程式認證方法的更多資訊,請參閱位於以下位置的「The J2EE 1.4 Tutorial」:http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

表 9–1 Application Server 認證方法

認證方法

通訊協定

說明

使用者憑證加密

基本 

HTTP (SSL 選取性) 

使用伺服器的內建快顯式登入對話方塊。 

無,除非使用 SSL。 

基於表單 

HTTP (SSL 選取性) 

應用程式提供它自己的自訂登入頁面和錯誤頁面。 

無,除非使用 SSL。 

使用者端憑證 

HTTPS (基於 SSL 的 HTTP) 

伺服器使用公開金鑰憑證認證使用者端。 

SSL 

驗證單次登入

單次登入可以讓一個虛擬伺服器實例中的多個應用程式共用使用者認證狀態。使用單次登入,登入到一個應用程式的使用者也會隱式登入到需要相同認證資訊的其他應用程式。

單次登入基於群組。其部署描述元可定義相同的群組並可使用相同認證方法 (基本、表單、摘要、憑證) 的所有 Web 應用程式均共用單次登入。

對於為 Application Server 定義的虛擬伺服器,依預設已啟用單次登入。

對使用者進行授權

使用者通過認證後,授權層級將決定該使用者可以執行哪些作業。使用者的授權基於其角色。例如,人力資源應用程式可以授權管理者檢視所有員工的個人資訊,但每個員工僅能檢視自己的個人資訊。如需有關角色的更多資訊,請參閱瞭解使用者、群組、角色和範圍

指定 JACC 提供者

JACC (Java 容器授權合約) 屬於 J2EE 1.4 規格,它定義可插接式授權提供者介面。這可以讓管理員設置協力廠商外掛程式模組以執行授權。

依預設,Application Server 提供符合 JACC 規格並基於檔案的簡單授權引擎。還可以指定其他協力廠商 JACC 提供者。

JACC 提供者使用 Java 認證與授權服務 (JAAS) API。JAAS 可以讓服務對使用者進行認證並強制對使用者進行存取控制。JAAS 實作了 Java 技術版本的標準可插接式認證模組 (PAM) 框架。

稽核認證與授權決策

Application Server 可以透過稽核模組提供對所有認證與授權決策的稽核追蹤。Application Server 提供預設的稽核模組,還提供了自訂稽核模組的功能。如需有關開發自訂稽核模組的資訊,請參閱「Application Server Developer's Guide」中的「Configuring an Audit Module」 小節。

配置訊息安全性

訊息安全性可以讓伺服器在訊息層執行 Web 服務呼叫和回應的點對點認證。Application Server 使用 SOAP 層上的訊息安全性提供者實作訊息安全性。訊息安全性提供者提供以下資訊,例如請求訊息和回應訊息所需的認證類型。受支援的認證類型包括:

此發行版本包括兩個訊息安全性提供者。可以為 SOAP 層的認證配置訊息安全性提供者。可以配置的提供者包括 ClientProviderServerProvider

訊息層安全性支援以 (可插接式) 認證模組的形式整合在 Application Server 及其用戶端容器中。依預設,Application Server 中的訊息層安全性處於停用狀態。

您可以為整個 Application Server 或者為特定的應用程式或方法配置訊息層安全性。第 10 章, 配置訊息安全性中論述了如何配置 Application Server 層級的訊息安全性。「Developer's Guide」中的「Securing Applications」一章論述了如何配置應用程式層級的訊息安全性。

瞭解使用者、群組、角色和範圍

Application Server 對以下實體強制執行其認證與授權策略:


備註 –

儘管使用者和群組是為整個 Application Server 指定的,但是每個應用程式都需要定義自己的角色。封裝和部署應用程式時,應用程式會指定使用者/群組和角色之間的對映,如下圖所示。


圖 9–1 角色對映

此圖顯示為群組指定使用者的方式、為角色指定使用者和群組的方式,以及應用程式使用群組和角色的方式。

使用者

使用者是已在 Application Server 中定義的個人 (或應用程式) 身份。使用者可以與群組關聯。Application Server 認證服務可以管理多個範圍中的使用者。

群組

J2EE 群組 (或簡稱群組) 是依循一般特性 (例如職務或用戶設定檔) 進行分類的使用者類別。例如,假定電子商務應用程式的使用者屬於 customer 群組,但是大用戶可以屬於 preferred 群組。將使用者進行群組分類可以簡化有大量使用者時的存取控制。

角色

角色定義使用者可以存取哪些應用程式以及每個應用程式的哪些部分,以及使用者可以執行的作業。亦即,角色決定了使用者的授權層級。

例如,假定在人事應用程式中,所有員工均可以存取電話號碼和電子郵件地址但只有管理者才能存取薪水資訊。該應用程式至少可以定義兩個角色:employeemanager;僅允許 manager 角色的使用者檢視薪水資訊。

角色與使用者群組的不同之處在於,角色在應用程式中定義功能,而使用者群組是以某一方式相關的一組使用者。例如,假定在人事應用程式中有 full-timepart-timeon-leave 幾個群組,但所有這些群組中的使用者仍是 employee 角色。

角色是在應用程式部署描述元中定義的。相反,群組是針對整個伺服器和範圍而定義的。應用程式開發者或部署者在每個應用程式的部署描述元中將角色對映至一個或多個群組。

範圍

範圍 (也稱為安全策略網域安全網域),是伺服器定義和強制執行一般安全策略的範圍。在實際應用中,範圍是伺服器儲存使用者和群組資訊的儲存庫。

Application Server 預先配置了三個範圍:file (初始預設範圍)、certificateadmin-realm。您還可以設定 ldapsolaris 範圍或自訂範圍。應用程式可以在其部署描述元中指定要使用的範圍。如果應用程式不指定範圍,Application Server 將使用其預設範圍。

file 範圍中,伺服器將使用者憑證儲存在本地名為 keyfile 的檔案中。您可以使用 Administration Console 來管理 file 範圍中的使用者。.

certificate 範圍中,伺服器將使用者憑證儲存在憑證資料庫中。使用 certificate 範圍時,伺服器結合使用憑證和 HTTPS 通訊協定認證 Web 用戶端。如需有關憑證的更多資訊,請參閱憑證和 SSL 簡介

admin-realm 也是一個 FileRealm,它將管理員使用者憑證儲存在本地名為 admin-keyfile 的檔案中。您可以使用 Administration Console 管理此範圍中的使用者,其方法與您管理 file 範圍中的使用者的方法相同。

ldap 範圍中,伺服器將從簡易資料存取協定 (LDAP) 伺服器 (例如 Sun Java System Directory Server) 中取得使用者憑證。LDAP 是一種可以讓任何人在網路 (無論是公共網際網路還是企業內部網路) 中尋找組織、個人和其他資源 (例如檔案和裝置) 的協定。如需有關管理 ldap 範圍中的使用者和群組的資訊,請參閱您的 LDAP 伺服器文件。

solaris 範圍中,伺服器將從 Solaris 作業系統中取得使用者憑證。Solaris 9 OS 和更高版本支援此範圍。如需有關管理 solaris 範圍中的使用者和群組的資訊,請參閱您的 Solaris 文件。

自訂範圍是使用者憑證的任何其他儲存庫,例如關聯式資料庫或協力廠商元件。如需更多資訊,請參閱 Admin Console 線上說明。

憑證和 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 配合使用。

關於防火牆

防火牆控制兩個或多個網路之間的資料流,並管理網路之間的連結。防火牆可能包含硬體和軟體元素。本節描述了一些一般防火牆架構及其配置。此處的資訊主要針對 Application Server。如需有關特定防火牆技術的詳細資訊,請參閱防火牆供應商提供的文件。

通常,需要對防火牆進行配置,以便使用者端存取所需的 TCP/IP 連接埠。例如,如果 HTTP 偵聽程式正在連接埠 8080 上作業,則將防火牆配置為僅允許處理連接埠 8080 上的 HTTP 請求。同樣地,如果為連接埠 8181 設定了 HTTPS 請求,則必須將防火牆配置為允許處理連接埠 8181 上的 HTTPS 請求。

如果需要從網際網路對 EJB 模組進行直接的 RMI-IIOP (全稱為 Remote Method Invocations over Internet Inter-ORB Protocol [通過網際網路 ORB 交換協定的遠端方法呼叫]) 存取,則還需要開啟 RMI-IIOP 偵聽程式連接埠,但強烈建議您不要這樣做,因為這樣可能會破壞安全性。

在雙防火牆架構中,您必須將外部防火牆配置為允許處理 HTTP 和 HTTPS 作業事件。您必須將內部防火牆配置為允許 HTTP 伺服器外掛程式與防火牆後面的 Application Server 進行通訊。

使用 Administration Console 管理安全性

Administration Console 提供了對安全性的以下方面進行管理的方法:

伺服器安全性設定

在 [安全性設定] 頁面中,設定整個伺服器的特性,包括指定預設範圍、匿名角色和預設的主體使用者名稱和密碼。

範圍和 file 範圍使用者

瞭解使用者、群組、角色和範圍中介紹了範圍的概念。

JACC 提供者

指定 JACC 提供者中介紹了 JACC 提供者。使用 Administration Console 執行以下作業:

稽核模組

稽核認證與授權決策中介紹了稽核模組。稽核是記錄重要事件 (例如錯誤或安全性漏洞) 以進行後續檢查的方法。所有認證事件都被記錄到 Application Server 記錄中。完整的存取記錄提供了 Application Server 存取事件的循序追蹤。

使用 Administration Console 執行以下作業:

訊息安全性

配置訊息安全性中介紹了訊息安全性的概念。使用 Administration Console 執行以下作業:

有關這些作業的詳細資訊,請參閱 Administration Console 線上說明。

HTTP 和 IIOP 偵聽程式安全性

HTTP 服務中的每個虛擬伺服器都透過一個或多個 HTTP 偵聽程式提供網路連線。

Application Server 支援 CORBA (共用物件請求代理程式架構) 物件,這類物件使用網際網路 Orb 交換協定 (IIOP) 在網路上進行通訊。IIOP 偵聽程式接受來自 EJB 的遠端用戶端和其他基於 CORBA 之用戶端的內送連線。如需有關 IIOP 偵聽程式的一般資訊,請參閱IIOP 偵聽程式

使用 Administration Console 執行以下作業:

管理服務安全性

管理服務決定伺服器實例是一般實例、網域管理伺服器 (DAS),還是兼具兩者。使用管理服務可以配置 JSR-160 相容遠端 JMX 連接器,該連接器處理網域管理伺服器與遠端伺服器實例的節點代理程式 (管理主機電腦上的伺服器實例) 之間的通訊。

使用 Administration Console 執行以下作業:

安全性對映

請使用 Administration Console 來執行下列安全性對映作業:

使用憑證和 SSL

關於憑證檔案

安裝 Application Server 時會產生一個適用於內部測試的 JSSE (Java Secure Socket Extension) 或 NSS (網路安全性服務) 格式的數位憑證。依預設,Application Server 將其憑證資訊儲存在 domain-dir /config 目錄下的憑證資料庫中:

變更憑證檔案的位置

供開發使用的金鑰庫檔案和信任庫檔案儲存在 domain-dir/config 目錄中。

使用 Admin Console,展開 [server-config] 節點 > [JVM 設定] > [JVM 選項] 標籤,以增加或修改憑證檔案新位置的值欄位。


-Dcom.sun.appserv.nss.db=${com.sun.aas.instanceRoot}/NSS-database-directory

其中 NSS-database-directory 是 NSS 資料庫的位置。

使用 Java 安全套接字延伸 (JSSE) 工具

使用 keytool 可以設定和使用 JSSE (Java 安全套接字延伸) 數位憑證。在 Platform Edition 和 Enterprise Edition 中,用戶端 (應用程式用戶端或獨立用戶端) 均使用 JSSE 格式。

J2SE SDK 附帶有 keytool,可以讓管理員管理公開/私密金鑰對和關聯憑證。還可以讓使用者快取正與其通訊的另一方的公開金鑰 (以憑證形式)。

若要執行 keytool,必須配置 shell 環境,以使 J2SE /bin 目錄位於路徑中,或者指令行中必須存在該工具的完整路徑。如需有關 keytool 的更多資訊,請參閱位於以下位置的 keytool 文件:http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html

使用 keytool 公用程式

以下範例說明了與使用 JSSE 工具處理憑證相關的用法︰

使用 keytool 公用程式產生憑證

使用 keytool 產生、匯入和匯出憑證。依預設,keytool 將在其執行目錄中建立金鑰庫檔案。

  1. 變更至要執行憑證的目錄。

    始終在包含金鑰庫檔案和信任庫檔案的目錄中產生憑證,依預設,該目錄為 domain-dir/config。如需有關變更這些檔案位置的資訊,請參閱變更憑證檔案的位置

  2. 輸入以下 keytool 指令,以在金鑰庫檔案 keystore.jks 中產生憑證:


    keytool -genkey -alias keyAlias-keyalg RSA
     -keypass changeit
     -storepass changeit
    -keystore keystore.jks

    使用任何專屬名稱做為 keyAlias。如果您已變更金鑰庫或私密金鑰密碼的預設值,請使用新密碼取代以上指令中的 changeit

    螢幕上將顯示提示,要求您提供姓名、組織和其他資訊,keytool 將使用這些資訊產生憑證。

  3. 輸入以下 keytool 指令,以將產生的憑證匯出至檔案 server.cer (或 client.cer [如果您願意]):


    keytool -export -alias keyAlias-storepass changeit
     -file server.cer
     -keystore keystore.jks
  4. 如需由憑證授權單位簽署的憑證,請參閱使用 keytool 公用程式簽署數位憑證

  5. 若要建立信任庫檔案 cacerts.jks,並將憑證增加至該信任庫,請輸入以下 keytool 指令:


    keytool -import -v -trustcacerts
    -alias keyAlias
     -file server.cer
    -keystore cacerts.jks
     -keypass changeit
  6. 如果您已變更金鑰庫或私密金鑰密碼的預設值,請使用新密碼取代以上指令中的 changeit

    工具將顯示有關憑證的資訊並提示您是否要信任該憑證。

  7. 鍵入 yes,然後按下 Enter 鍵。

    keytool 便會顯示如下資訊:


    Certificate was added to keystore
    [Saving cacerts.jks]
  8. 重新啟動 Application Server。

使用 keytool 公用程式簽署數位憑證

建立數位憑證之後,所有者必須簽署該憑證以防偽造。電子商務站點或那些身份認證對其很重要的站點可以從知名的憑證授權機構 (CA) 購買憑證。如果無需考量認證 (例如當私密安全通訊可以滿足全部需求時),則可節省獲取 CA 憑證所花費的時間和費用並使用自我簽署憑證。

  1. 請依照 CA 網站上的說明產生憑證金鑰對。

  2. 下載產生的憑證金鑰對。

    將憑證儲存在包含金鑰庫檔案和信任庫檔案的目錄中,依預設,該目錄為 domain-dir/config。請參閱變更憑證檔案的位置

  3. 在 shell 中,變更至包含憑證的目錄。

  4. 使用 keytool 將憑證匯入本機金鑰庫和本機信任庫 (如有必要)。


    keytool -import -v -trustcacerts
    -alias keyAlias
     -file server.cer
    -keystore cacerts.jks
     -keypass changeit
    -storepass changeit

    如果金鑰庫密碼或私密金鑰密碼不是預設密碼,請使用新密碼取代以上指令中的 changeit

  5. 重新啟動 Application Server。

使用 keytool 公用程式刪除憑證

若要刪除現有憑證,請使用 keytool -delete 指令,例如:

keytool -delete
 -alias keyAlias
 -keystore keystore-name
 -storepass password

使用網路安全服務 (NSS) 工具

在 Enterprise Edition 的伺服器端,使用網路安全服務 (NSS) 數位憑證管理儲存私密金鑰和憑證的資料庫。對於用戶端 (應用程式用戶端或獨立用戶端),使用使用 Java 安全套接字延伸 (JSSE) 工具中所述的 JSSE 格式。

使用網路安全服務 (NSS) 管理安全性的工具包括:

這些工具位於 install-dir/lib/ 目錄中。以下環境變數用於指向 NSS 安全性工具的位置︰

在這些範例中,憑證一般名稱 (CN) 是指用戶端或伺服器的名稱。CN 還用於在 SSL 交換過程中比較憑證名稱和產生憑證的主機名稱。如果憑證名稱和主機名稱不符,則在 SSL 交換過程中會產生警告或異常。在某些範例中,為方便起見,使用憑證一般名稱 CN=localhost,以便所有使用者均可以使用該憑證,而不必使用其真實主機名稱建立新憑證。

以下小節中的範例說明了與使用 NSS 工具處理憑證相關的用法︰

使用 certutil 公用程式

執行 certutil 之前,請確定 LD_LIBRARY_PATH 指向執行此公用程式所需之程式庫的位置。這個位置可以從 asenv.conf (整個產品的配置檔案) 中 AS_NSS_LIB 的值加以識別。

憑證資料庫工具 certutil 是 NSS 指令行公用程式,可建立和修改 Netscape Communicator cert8.dbkey3.db 資料庫檔案。該公用程式還可以列出、產生、修改或刪除 cert8.db 檔案中的憑證,以及建立或變更密碼、產生新的公開和私密金鑰對、顯示金鑰資料庫的內容或刪除 key3.db 檔案中的金鑰對。

金鑰和憑證管理程序通常以在金鑰資料庫中建立金鑰開始,然後在憑證資料庫中產生和管理憑證。以下文件論述了如何使用 NSS (包括 certutil 公用程式的語法) 管理憑證和金鑰資料庫:http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html

以下清單中的每個項目均提供了使用 NSS 和 JSSE 安全性工具建立和/或管理憑證的範例。

使用 pk12util 公用程式匯入和匯出憑證

pk12util 指令行公用程式用於以 PKCS12 格式在憑證/金鑰資料庫和檔案之間匯入與匯出金鑰和憑證。PKCS12 為公開金鑰加密標準 (PKCS) #12,個人資訊交換語法標準。如需有關 pk12util 公用程式的說明,請至http://www.mozilla.org/projects/security/pki/nss/tools/pk12util.html

使用 modutil 增加和刪除 PKCS11 模組

安全性模組資料庫工具 modutil 是指令行公用程式,用於管理 secmod.db 檔案或硬體記號中的 PKCS #11 (加密記號介面標準) 模組資訊。您可以使用此工具來增加和刪除 PKCS #11 模組、變更密碼、設定預設值、列出模組內容、啟用或停用槽、啟用或停用 FIPS-140-1 規範遵循,以及為加密作業指定預設提供者。此工具還可以建立 key3.dbcert7.db secmod.db 安全性資料庫檔案。如需有關此工具的更多資訊,請至 http://www.mozilla.org/projects/security/pki/nss/tools/modutil.html

將 Application Server 與硬體加密加速器搭配使用

您可以使用硬體加速器記號來改善加密效能,同時提供安全金鑰儲存功能。另外,您也可以經由智慧卡,為一般使用者提供行動式安全金鑰儲存。

Sun Java System Application Server 8.1 和 8.2 Standard Edition 或 Enterprise Edition 在 Java 2 Platform, Standard Edition (J2SE 平台) 5.0 上執行時,支援對 SSL 或 TLS 通訊使用 PKCS#11 記號,並支援使用網路安全性服務 (NSS) 工具來管理金鑰和 PKCS#11 記號。本小節說明 Application Server 如何提供上述支援,同時帶您逐步執行相關配置的程序。

J2SE 5.0 PKCS#11 提供者可以和 Application Server 執行階段輕鬆整合。藉由這些提供者,您可以在 Application Server 中使用硬體加速器和其他 PKCS#11 記號,以達到快速效能,並保護 SSL 或 TLS 通訊中原有的私密金鑰。

本小節包含下列主題:

關於配置硬體加密加速器

Sun Java System Application Server 8.1 和 8.2 Standard Edition 或 Enterprise Edition 已通過 Sun Crypto Accelerator 1000 (SCA-1000) 和 SCA-4000 的測試。

Application Server 和 J2SE 5.0 一同使用時,可以和 PKCS#11 記號進行通訊。和 Application Server 一起封裝的是 NSS PKCS#11 記號程式庫 (適用於 NSS 內部 PKCS#11 模組,通常稱為 NSS 軟體記號) 以及 NSS 指令行管理工具。如需更多詳細資訊,請參閱使用網路安全服務 (NSS) 工具

使用 NSS 工具根據 PKCS#11 記號和 J2SE PKCS#11 提供者建立金鑰和憑證,以便在執行階段存取記號金鑰和憑證。PKCS#11 提供者為加密服務的提供者,可做為原生 PKCS#11 程式庫外圍的包裝程式。PKCS#11 記號通常是指含原生 PKCS#11 介面的所有硬體和軟體記號。硬體記號是以實體裝置 (如硬體加速器和智慧卡) 實作的 PKCS#11 記號。軟體記號則是完全以軟體實作的 PKCS#11 記號。


備註 –

如果您在 J2SE 1.4.x 平台上執行 Application Server,則僅支援一個 PKCS#11 記號,即 NSS 軟體記號。


在 Microsoft Windows 環境下,請將 NSS 程式庫 AS_NSS 和 NSS 工具目錄 AS_NSS_BIN 的位置,增加到 PATH 環境變數中。為簡化說明,本小節所描述的程序僅使用 UNIX 指令。必要時請將 UNIX 變數替代為 Windows 變數。

硬體加密加速器的配置可分為兩個主要程序:

配置 PKCS#11 記號

本小節說明如何以 NSS 安全性工具 modutil 配置 PKCS#11 記號。請使用下列程序來配置 PKCS#11 記號。

輸入下列指令 (全部置於同一行):

modutil -dbdir AS_NSS_DB -nocertdb -force -add moduleName -libfile
 absolute_path_of_pkcs11_library -mechanisms list_of_security_mechanisms

其中,AS_NSS_DB 是 NSS 資料庫目錄 (和您使用 Domain Administration Server (DAS) 時的 AS_DOMAIN_CONFIG 相同)

例如,若要配置硬體加速器記號,請輸入下列內容 (全部置於同一行):

modutil -dbdir AS_NSS_DB -nocertdb -force -add "Sun Crypto Accelerator" -libfile
 /opt/SUNWconn/crypto/lib/libpkcs11.so -mechanisms RSA:DSA:RC4:DES

此範例中的硬體加速器為 SCA–1000 加密加速器。依預設,對應的 PKCS#11 程式庫位於 /opt/SUNWconn/crypto/lib/libpkcs11.so

mechanisms 必須是記號上可供使用之加密機制的完整清單。如果僅使用數個可用的加密機制,請參閱配置 J2SE 5.0 PKCS#11 提供者。如要取得所有支援機制的完整清單,請參閱 NSS 安全性工具網站上的 modutil 文件,網址是 http://www.mozilla.org/projects/security/pki/nss/tools

以下範例假設在記號安裝期間所指定的記號名稱為 mytoken

為驗證硬體加速器的配置是否正確,請輸入下列指令:

modutil -list -dbdir AS_NSS_DB

標準輸出如以下所示:


Using database directory /var/opt/SUNWappserver/domains/domain1/config ...

Listing of PKCS#11 Modules
-----------------------------------------------------------
  1. NSS Internal PKCS#11 Module
         slots: 2 slots attached
        status: loaded

         slot: NSS Internal Cryptographic Services                            
        token: NSS Generic Crypto Services

         slot: NSS User Private Key and Certificate Services                  
        token: NSS Certificate DB

  2. Sun Crypto Accelerator
        library name: /opt/SUNWconn/crypto/lib/libpkcs11.so
         slots: 1 slot attached
        status: loaded

         slot: Sun Crypto Accelerator:mytoken
        token: mytoken
-----------------------------------------------------------

 

管理金鑰和憑證

本小節說明數種使用 certutilpk12util 來建立和管理金鑰與憑證的常用程序。如需有關 certutilpk12util 的詳細資訊,請參閱使用網路安全服務 (NSS) 工具以及 NSS 安全性工具網站上的文件,網址是 http://www.mozilla.org/projects/security/pki/nss/tools


備註 –

藉由在 java.security 特性檔案 (位於 Java 執行階段的 JAVA_HOME/jre/lib/security 目錄中) 中配置 PKCS#11 提供者,您還可以使用 J2SE keytool 公用程式來管理金鑰和憑證。如需有關使用 keytool 的詳細資訊,請參閱「Java PKCS#11 Reference Guide」,網址為 http://java.sun.com/j2se/1.5.0/docs/guide/secuirty/p11guide.html


本小節說明下列主題:

列出金鑰和憑證

使用私密金鑰和憑證

使用 certutil 來建立自我簽署的憑證,並匯入或匯出憑證。若要匯入或匯出私密金鑰,請使用 pk12util 公用程式。如需更多詳細資訊,請參閱使用網路安全服務 (NSS) 工具


注意 – 注意 –

在 Application Server 中,請勿直接使用 NSS 工具 certutilmodutil 來修改 NSS 密碼。否則 Application Server 中的安全性資料可能會毀壞。


配置 J2SE 5.0 PKCS#11 提供者

Application Server 需藉由 J2SE PKCS#11 提供者,在執行階段存取位於 PKCS#11 記號中的金鑰和憑證。依預設,Application Server 會為 NSS 軟體記號配置 J2SE PKCS#11 提供者。本小節說明如何置換 J2SE PKCS#11 提供者的預設配置。

在 Application Server 上,會為每個 PKCS#11 記號產生下列預設的 PKCS#11 配置參數。

這些配置符合「Java PKCS#11 Reference Guide」所描述的語法。


備註 –

只要求名稱參數必須為唯一。J2SE 5.0 有些舊版本僅支援字母數字式的字元。


您可以建立自訂的配置檔案,以置換預設的配置參數。例如,您可以在 SCA–1000 中,明確停用 RSA 密碼和 RSA 金鑰對產生器。如需有關停用 RSA 密碼和 RSA 金鑰對產生器的詳細資訊,請參閱 http://www.mozilla.org/projects/security/pki/nss/tools

建立自訂的配置檔案:

  1. 使用下列程式碼建立名為 install-dir/mypkcs11.cfg 的配置檔案,然後儲存該檔案。


    name=HW1000
    library=/opt/SUNWconn/crypto/lib/libpkcs11.so
    slotListIndex=0
    disabledMechanisms = {
    	CKM_RSA_PKCS
    	CKM_RSA_PKCS_KEY_PAIR_GEN
    }
    omitInitialize=true
  2. 如有必要,請更新 NSS 資料庫。在這個案例中,請更新 NSS 資料庫,這樣才能停用 RSA。

    執行下列指令:


    modutil -undefault "Sun Crypto Accelerator" -dbdir AS_NSS_DB -mechanisms RSA

    mechanisms 清單上的演算法名稱,與預設配置中的演算法名稱不同。如需 NSS 中有效 mechanisms 的清單,請參閱 NSS 安全性工具網站上的 modutil 文件,網址是 http://www.mozilla.org/projects/security/pki/nss/tools

  3. 如下所示進行變更,在適當的位置增加特性以更新伺服器:


    <property name="mytoken" value="&InstallDir;/mypkcs11.cfg"/>

    特性的位置可能是下列其中一處:

    • 若提供者適用於 DAS 或伺服器實例,請將特性增加到相關聯的 <security-service> 之下。

    • 若提供者適用於節點代理程式,請將特性增加到 domain.xml 檔案中,相關聯的 <node-agent> 元素之下。

  4. 重新啟動 Application Server。

    自訂配置將在重新啟動後生效。

詳細資訊