Sun Java logo     上一頁      目錄      索引      下一頁     

Sun logo
Sun Java System Message Queue 3 2005Q4 管理指南 

第 7 章
管理安全性

管理員負責配置認證使用者的使用者儲存庫、定義存取控制、配置加密用戶端與代理程式間通訊的安全套接層 (SSL) 連線服務,以及設定用於啟動代理程式的密碼檔案。

本章包含下列各節:


認證使用者

當使用者嘗試連線至代理程式時,此代理程式將透過檢查提供的名稱和密碼,認證此使用者。如果名稱和密碼與配置每個代理程式要參考的特定代理程式使用者儲存庫中的名稱和密碼相符,則代理程式承認此連線。

您負責維護使用者儲存庫中的使用者、使用者群組以及使用者密碼清單。您可以在每個代理程式實例使用不同的使用者儲存庫。本節介紹如何建立、寫入和管理儲存庫。

儲存庫可能是下列任一類型:

使用平面檔案使用者儲存庫

Message Queue 提供了平面檔案使用者儲存庫和指令行工具,即使用者管理員公用程式 (imqusermgr),您可以使用此工具寫入和管理平面檔案使用者儲存庫。以下各節描述平面檔案使用者儲存庫,以及您如何使用使用者管理員公用程式寫入和管理儲存庫。

建立使用者儲存庫

平面檔案使用者儲存庫是針對實例的。您啟動的每個代理程式實例,都會自動建立預設的使用者儲存庫 (稱為 passwd)。此使用者儲存庫位於以代理程式實例名稱作為辨別依據的目錄中,且代理程式實例與儲存庫相互關聯 (請參閱附錄 A「Message Queue 資料的平台特定位置」):

.../instances/instanceName/etc/passwd

此儲存庫建立有兩個項目:表 7-1 的每一行表示一個項目。

表 7-1 使用者儲存庫中的初始項目 

使用者名稱

密碼

群組

狀態

admin

admin

admin

使用中

guest

guest

anonymous

使用中

這些初始項目可讓 Message Queue 代理程式在安裝之後立即使用,而無需管理員的介入:

以下各節介紹如何寫入和管理平面檔案使用者儲存庫。

使用者管理員公用程式

Message Queue 使用者管理員公用程式 (imqusermgr) 可讓您編輯或寫入平面檔案使用者儲存庫。本節介紹使用者管理員公用程式。後續各節介紹如何使用 imqusermgr 子指令完成特定的工作。

如需 imqusermgr 指令的完整參照資訊,請參閱第 13 章「指令行參照」

使用使用者管理員前,請注意以下事項:

子指令

imqusermgr 指令有子指令 adddeletelistupdate

指令選項

表 7-2 列出了 imqusermgr 指令的選項。

表 7-2 imqusermgr 選項  

選項

說明

-a activeState

指定使用者的狀態是否應為使用中 (true/false)。值 true 表示狀態為使用中。這是預設值。

-f

未經使用者確認即執行動作。

-h

顯示用法說明。不執行指令行上的其他任何指令。

-i instanceName

指定要套用指令的代理程式實例名稱。如果未指定,則假設為預設實例名稱 imqbroker

-p passwd

指定使用者密碼。

-g group

指定使用者群組。有效值為 adminuseranonymous

-s

設定無訊息模式。

-u userName

指定使用者名稱。

-v

顯示版本資訊。不執行指令行上的其他任何指令。

群組

為代理程式實例的使用者儲存庫新增使用者項目時,您可以指定三個預先定義群組中的任一項:adminuseranonymous。如果未指定群組,則指定預設群組 user。應如下所示指定群組:

若要變更使用者的群組,您必須刪除使用者項目並為此使用者新增其他項目,從而指定新的群組。

您不能將系統建立的群組重新命名或刪除,也不能建立新群組。但是,您可以指定用來定義群組成員可執行作業的存取規則。如需更多資訊,請參閱授權使用者:存取控制特性檔案

使用者狀態

依預設,新增使用者至儲存庫時,使用者的狀態預設為使用中。若要讓此使用者變成非使用中狀態,您必須使用更新指令。例如,以下指令可讓使用者 JoeD 的狀態變成非使用中:

imqusermgr update -u JoeD -a false

已變成非使用中使用者的項目保留在儲存庫中;但是,非使用中使用者無法開啟新的連線。如果使用者為非使用中,且您新增具有相同名稱的其他使用者,則作業將失敗。您必須刪除非使用中使用者項目或變更新使用者的名稱,或者為新使用者命名其他名稱。這可防止您新增重複的使用者名稱。

使用者名稱與密碼的格式

使用者名稱與密碼必須遵循以下原則:

寫入和管理使用者儲存庫

使用 add 子指令可新增使用者至儲存庫。例如,以下指令可將使用者 Katharine 和密碼 sesame,新增到預設的代理程式實例使用者儲存庫。

imqusermgr add -u Katharine -p sesame -g user

使用 delete 子指令可從儲存庫刪除使用者。例如,以下指令可刪除使用者 Bob

imqusermgr delete -u Bob

使用 update 子指令可變更使用者的密碼或狀態。例如,以下指令將 Katharine 的密碼變更為 aladdin

imqusermgr update -u Katharine -p aladdin

若要列出有關一個或所有使用者的資訊,請使用 list 指令。以下指令顯示有關名為 isa 的使用者之資訊:

imqusermgr list -u isa

% imqusermgr list -u isa

用於代理實例的使用者儲存庫:imqbroker

----------------------------------

使用者名稱     群組     使用中狀態

----------------------------------

isa          admin    true

以下指令列出有關所有使用者的資訊:

imqusermgr list

% imqusermgr list

用於代理實例的使用者儲存庫:imqbroker

--------------------------------------

使用者名稱     群組         使用中狀態

--------------------------------------

admin        admin        true

guest        anonymous    true

isa          admin        true

testuser1    user         true

testuser2    user         true

testuser3    user         true

testuser4    user         false

testuser5    user         false

變更預設管理員密碼

為了安全性起見,您應將 admin 的預設密碼變更為只有您自己知道的密碼。以下指令將 mybroker 代理程式實例的預設管理員密碼 admin 變更為 grandpoobah

imqusermgr update mybroker -u admin -p grandpoobah

當代理程式實例正在執行時,您可以透過執行任一指令行工具,來快速確認此變更是否生效。例如,下列指令會提示您提供密碼:

imqcmd list svc mybroker -u admin

輸入新密碼 (grandpoobah) 即生效,輸入舊密碼即失敗。

變更密碼後,使用任一 Message Queue 管理工具 (包括管理主控台) 時,您均應提供新的密碼。

將 LDAP 伺服器用於使用者儲存庫

若要將 LDAP 伺服器用於使用者儲存庫,請執行下列工作:

編輯實例配置檔案

若要代理程式使用目錄伺服器者,請在代理程式實例配置檔案 config.properties 中設定一些特性值。當使用者嘗試連線至代理程式實例或執行訊息作業時,這些特性可讓代理程式實例查詢 LDAP 伺服器,以取得使用者和群組的相關資訊。

實例配置檔案位於代理程式實例目錄下的目錄中。路徑格式如下:

.../instances/instanceName/props/config.properties

如需作業系統特定的實例目錄位置之詳細資訊,請參閱附錄 A「Message Queue 資料的平台特定位置」

    編輯配置檔案以使用 LDAP 伺服器
  1. 透過設定以下特性指定您要使用 LDAP 使用者儲存庫:
  2. imq.authentication.basic.user_repository=ldap

  3. 設定 imq.authentication.type 特性,以確定密碼應以 64 基本編碼 (basic) 還是以 MD5 編碼 (digest),從用戶端傳送至代理程式。當將 LDAP 目錄伺服器用於使用者儲存庫時,您必須將認證類型設定為 basic。例如,
  4. imq.authentication.type=basic

  5. 您還必須設定可控制 LDAP 存取的代理程式特性。這些特性儲存在代理程式的實例配置檔案中。安全性服務中討論了這些特性,並摘要於安全性特性
  6. Message Queue 使用 JNDI API 與 LDAP 目錄伺服器通訊。請參閱 JNDI 文件,以取得這些特性中所參考之語法和術語的更多相關資訊。Message Queue 使用 Sun JNDI LDAP 供應商和簡單認證。

    Message Queue 支援 LDAP 認證容錯移轉:您可以指定用於嘗試認證的 LDAP 目錄伺服器清單 (請參閱 imq.user.repos.ldap.server 特性的參照資訊)。

    如需 LDAP 使用者儲存庫相關特性的設定範例,請參閱代理程式的 config.properties 檔案。

  7. 如有必要,您需要編輯存取控制特性檔案中的使用者/群組和規則。如需有關使用存取控制特性檔案的更多資訊,請參閱授權使用者:存取控制特性檔案
  8. 如果在連線認證和群組搜尋期間,您要讓代理程式透過 SSL 與 LDAP 目錄伺服器通訊,則需要啟動 LDAP 伺服器中的 SSL,然後在代理程式配置檔案中設定以下特性:
    • 指定 LDAP 伺服器用於 SSL 通訊的連接埠。例如:
    • imq.user_repository.ldap.server=myhost:7878

    • 將代理程式特性 imq.user_repository.ldap.ssl.enabled
      設定為 true

      使用多台 LDAP 目錄伺服器時,請使用 ldap:// 指定其他目錄伺服器。例如:

      imq.user_repository.ldap.server=myHost:7878 ldap://otherHost:7878 ...

      以空格分隔每一台目錄伺服器。清單中的所有目錄伺服器必須使用相同的值,以供其他與 LDAP 相關的特性使用。

設定管理員的存取控制

若要建立管理使用者,您可以使用存取控制特性檔案,指定可以建立 ADMIN 連線的使用者和群組。這些使用者和群組必須預先在 LDAP 目錄中定義。

任何使用者或群組只要能夠建立 ADMIN 連線,即可下達管理指令。

    設定管理使用者
  1. 將代理程式特性 imq.accesscontrol.enabled 設定為 true 預設值,啟用存取控制檔案。
  2. imq.accesscontrol.enabled 特性可以啟用存取控制檔案。

  3. 開啟存取控制檔案 accesscontrol.properties附錄 A「Message Queue 資料的平台特定位置」中會列出此檔案的位置。
  4. 此檔案包含一個項目,如下所示:

    service connection access control
    ##################################
    connection.NORMAL.allow.user=*
    connection.ADMIN.allow.group=admin

    列出的項目僅為範例。請注意檔案型使用者儲存庫中有 admin 群組,但是依預設,LDAP 目錄中沒有此群組。您必須將 LDAP 目錄中定義的群組名稱,替換為要授與 Message Queue 管理員權限的群組名稱。

  5. 若要將 Message Queue 管理員權限授與使用者,請如下列所示,輸入使用者名稱:
  6. connection.ADMIN.allow.user=userName[[,userName2]...]

  7. 若要將 Message Queue 管理員權限授與群組,請如下列所示,輸入群組名稱:
  8. connection.ADMIN.allow.group=groupName[[,groupName2]...]


授權使用者:存取控制特性檔案

存取控制特性檔案 (ACL 檔案) 包含的規則,指定使用者和群組使用者可以執行的作業。您可以編輯 ACL 檔案,限制某些使用者和群組執行作業。您可以在每個代理程式實例使用不同的 ACL 檔案。

無論使用者資訊放在平面檔案使用者儲存庫中還是放在 LDAP 使用者儲存庫中,均可使用 ACL 檔案。當用戶端應用程式執行以下作業之一時,代理程式會檢查其 ACL 檔案:

代理程式會檢查 ACL 檔案,判斷提出請求的使用者或該使用者所屬的群組是否已有授權執行此作業。

如果您編輯 ACL 檔案,新的設定會在下次代理程式檢查檔案以驗證授權時生效。您編輯此檔案後,不需要重新啟動代理程式。

建立存取控制特性檔案

ACL 檔案為特定實例。每次啟動代理程式實例時,會在實例目錄中建立預設檔案 accesscontrol.properties。此檔案的路徑格式如下 (請參閱附錄 A「Message Queue 資料的平台特定位置」):

…/instances/brokerInstanceName/etc/accesscontrol.properties

ACL 檔案的格式與 Java 特性檔案的格式類似。先是定義檔案的版本,然後分三部分指定存取控制規則:

version 特性定義 ACL 特性檔案的版本;您不能變更此項目。

version=JMQFileAccessControlModel/100

以下描述存取規則的基本語法並介紹如何計算權限,之後還描述指定存取控制的 ACL 檔案的三個部分。

存取規則的語法

在 ACL 特性檔案中,存取控制定義了特定使用者或群組對受保護的資源 (如實體目標和連線服務) 擁有何種存取權。存取控制由一條或一組規則表示,每條規則用一個 Java 特性表示:

這些規則的基本語法如下:

resourceType.resourceVariant.operation.access.principalType=principals

表 7-3 描述了語法規則的元素。

表 7-3 存取規則的語法元素 

元素

說明

resourceType

為以下之一:connectionqueuetopic

resourceVariant

resourceType 指定的類型實例。例如,myQueue。萬用字元符號 (*) 可用於表示所有連線服務類型或所有實體目標。

operation

值取決於要制定的存取規則種類。

access

為以下之一:allowdeny

principalType

為以下之一:usergroup。如需更多資訊,請參閱群組

principals

可以擁有在規則左側指定的存取權的使用者。如果 principalTypeuser,則此項可以為個別使用者或使用者清單 (以逗號分隔);如果 principalTypegroup,則此項可以為單一群組或群組清單 (以逗號分隔的清單)。萬用字元符號 (*) 可用於表示所有使用者或所有群組。

以下為存取規則的一些範例:

如何計算權限

檔案中有多個存取規則時,權限計算如下:

連線服務的存取控制

ACL 特性檔案中的連線存取控制部分,包含用於代理程式連線服務的存取控制規則。連線存取控制規則的語法如下:

connection.resourceVariant.access.principalType=principals

resourceVariant 定義有兩個值:NORMALADMIN。您只能授權存取這些連線服務類型的預定值。

預設 ACL 特性檔案授權所有使用者存取 NORMAL 連線服務,並授權 admin 群組中的使用者存取 ADMIN 連線服務:

connection.NORMAL.allow.user=*

connection.ADMIN.allow.group=admin

如果您使用檔案型的使用者儲存庫,使用者管理員公用程式會建立預設群組 admin。如果您使用 LDAP 使用者儲存庫,您只要執行下列一項作業即可使用預設 ACL 特性檔案:

您可以限制連線存取權限。例如,以下規則拒絕 Bob 存取 NORMAL,但是允許其他所有使用者進行存取:

connection.NORMAL.deny.user=Bob

connection.NORMAL.allow.user=*

您可以使用星號 (*) 字元來指定所有認證使用者或群組。

您使用 ACL 特性檔案授權存取 ADMIN 連線的方式,與檔案型的使用者儲存庫和 LDAP 使用者儲存庫有下列不同:

實體目標的存取控制

存取控制特性檔案的目標存取控制部分,包含實體目標型的存取控制規則。這些規則確定何人 (使用者/群組) 可以在何處 (實體目標) 做什麼 (作業)。這些規則所規定的存取權類型包括:將訊息傳送至佇列、將訊息發佈至主題、接收來自佇列的訊息、訂閱主題以及瀏覽佇列中的訊息。

依預設,任何使用者或群組對任何實體目標擁有所有類型的存取權。您可以新增更多特定的目標存取規則,或編輯預設規則。本節的其餘部分介紹實體目標存取規則的語法,您必須理解此語法以編寫自己的規則。

目標規則的語法如下:

resourceType.resourceVariant.operation.access.principalType=principals

表 7-4 描述了這些元素:

表 7-4 實體目標存取控制規則的元素 

元件

說明

resourceType

可能是 queuetopic

resourceVariant

實體目標名稱或所有實體目標 (*),表示所有佇列或所有主題。

operation

可能是 produceconsumebrowse

access

可能是 allowdeny

principalType

可能是 usergroup

存取權可以賦予一個或多個使用者和/或一個或多個群組。

以下範例說明了不同種類的實體目標存取控制規則:

自動建立實體目標的存取控制

ACL 特性檔案的最後部分,包括指定代理程式將為哪些使用者和群組自動建立實體目標的存取規則。

當使用者在並不存在的實體目標上建立產生者或用戶時,如果已啟用代理程式的自動建立特性,則代理程式將會建立此目標。

依預設,任何使用者或群組均有權讓代理程式自動建立實體目標。此權限由以下規則指定:

queue.create.allow.user=*

topic.create.allow.user=*

您可以編輯 ACL 檔案以限制此類型的存取權。

實體目標自動建立存取規則的一般語法如下:

resourceType.create.access.principalType=principals

其中 resourceTypequeuetopic

例如,以下規則可讓代理程式為除 Snoopy 之外的所有使用者自動建立主題目標。

topic.create.allow.user=*

topic.create.deny.user=Snoopy

請注意,實體目標自動建立規則的效果必須與實體目標存取規則的效果一致。例如,如果您 1) 變更目標存取規則,以禁止任何使用者將訊息傳送至目標,但是 2) 啟用目標的自動建立功能,如果此目標不存在,則代理程式將會建立此實體目標,但不會將訊息傳送至此目標。


使用 SSL 型服務

安全套接層 (SSL) 型標準的連線服務,可以在用戶端與代理程式之間傳送加密訊息。本節介紹如何設定 SSL 型連線服務。

Message Queue 支援安全套接層 (SSL) 標準型的下列連線服務:

這些連線服務允許在用戶端和代理程式之間傳送加密訊息。Message Queue 支援自身簽名伺服器憑證或簽名憑證的 SSL 型加密。

若要使用 SSL 型連線服務,您將使用金鑰工具公用程式 (imqkeytool) 產生私密金鑰/公開金鑰對。此公用程式將公開金鑰內嵌於自身簽名的憑證中,此憑證將傳送至請求與代理程式連線的用戶端,此用戶端使用此憑證設定加密連線。

雖然 Message Queue 的 SSL 連線服務在概念上相似,但是在設定方法上卻有些差異。

本節還介紹透過 TCP/IP 的安全連線。

使用者透過 HTTP 之 SSL 型連線服務 httpsjms,能讓用戶端和代理程式使用 HTTPS 通道 Servlet,建立安全連線。如需透過 HTTP 設定安全連線的詳細資訊,請參閱附錄 C「HTTP/HTTPS 支援」

TCP/IP 的安全連線服務

下列 SSL 型連線服務可提供透過 TCP/IP 的直接安全的連線:

配置使用自身簽名的憑證

本節描述如何使用自身簽名的憑證,設定 SSL 型服務。

若要提高認證層級,您可以使用認證機構驗證的簽名憑證。請先遵循本節中的步驟,然後再至配置使用簽名的憑證執行其他步驟。

    設定 SSL 型連線服務
  1. 產生自身簽名的憑證。
  2. 啟用代理程式中的 ssljmsssladmincluster 連線服務。
  3. 啟動代理程式。
  4. 設定並執行用戶端 (僅適用於 ssljms 連線服務)。

除步驟 4 配置並執行用戶端之外,設定 ssljmsssladmin 連線服務的程序是相同的。

以下各節較詳細地說明每個步驟。

步驟 1:產生自身簽名的憑證

具有自身簽名憑證的 Message Queue SSL 支援會認為用戶端正與已知並可信任的伺服器通訊,而保護線上資料。

執行金鑰工具公用程式,以便為代理程式產生自身簽名的憑證。在 UNIX® 系統上,若要擁有建立金鑰存放區的權限,您可能需要以超級使用者 (root) 的身份執行金鑰工具。

相同的憑證可用於 ssljmsssladmincluster 連線服務。

在指令提示符號下輸入以下內容:

imqkeytool -broker

公用程式會提示您輸入金鑰存放區密碼。

代理程式正在產生金鑰存放區 ...
輸入金鑰存放區密碼:

接著,公用程式會提示您輸入憑證所屬代理程式的識別資訊。您提供的資訊會製成 X.500 識別名稱。下表為每個提示列出提示及其說明和範例。這些值不區分大小寫,而且可以包含空格。

表 7-5 自身簽名憑證所需之識別名稱資訊 

提示

說明

範例

您的姓名是什麼?

X.500 commonName (CN)。請輸入執行代理程式伺服器完全合格的名稱。

myhost.sun.com

您的組織單位名稱是什麼?

X.500 organizationalUnit (OU)。請輸入部門名稱。

purchasing

您的組織名稱是什麼?

X.500 organizationName (ON)。較大的組織名稱,例如公司或政府實體。

My Company, Inc.

您的城市或所在地名稱是什麼?

X.500 localityName (L)。

San Francisco

您的州或省名稱是什麼?

X.500 stateName (ST)。請輸入州或省的名稱,不使用縮寫。

California

表示此單位的雙字母國碼是什麼?

X.500 country (C)。

US

輸入完畢後,金鑰工具會顯示您輸入的資訊,請您確認。例如:

Is CN=mqserver.sun.com, OU=purchasing, O=My Company, Inc., L=San Francisco, ST=California, C=US correct?

若要重新輸入這些值,請接受預設值或輸入 no;若要接受現行值並繼續執行,請輸入 yes。您確認後,金鑰工具會在產生成對的金鑰時暫停。

接著,金鑰工具會要求您提供密碼,以鎖定特定的成對金鑰 (金鑰密碼)。請對此提示按 Return 鍵,表示金鑰密碼和金鑰存放區密碼相同。


備註

請記住您提供的密碼。您啟動代理程式時必須提供此密碼,代理程式才能開啟金鑰存放區。您可以在密碼檔案中儲存金鑰存放區 (請參閱使用密碼檔案)。


執行 imqkeytool 指令,可執行 JDK keytool 公用程式,以產生自身簽名的憑證,並將其放在 Message Queue 金鑰存放區中,且如附錄 A「Message Queue 資料的平台特定位置」中所示,其目錄位置會因作業系統而異。

此金鑰存放區的格式與 JDK1.2 keytool 公用程式支援的格式相同。

這些是 Message Queue 金鑰存放區的可配置特性:

您可能需要重新產生成對金鑰,以解決某些問題,例如:

    重新產生金鑰對
  1. 移除代理程式的金鑰存放區,如附錄 A「Message Queue 資料的平台特定位置」中所示。
  2. 重新執行 imqkeytool 以產生金鑰對,如步驟 1:產生自身簽名的憑證中所述。

步驟 2:啟用代理程式中 SSL 型服務

若要啟用代理程式中 SSL 型服務,您需要將 ssljms (或 ssladmin) 新增到 imq.service.activelist 特性。


備註

請使用 imq.cluster.transport 特性啟用 SSL 型 cluster (叢集) 連線服務,而非使用 imq.service.activelist 特性。請參閱代理程式之間的安全連線


    啟用代理程式中 SSL 型的服務
  1. 開啟代理程式的實例配置檔案。
  2. 實例配置檔案位於以代理程式實例名稱 (instanceName) 作為辨別依據的目錄中,且代理程式實例與配置檔案相互關聯 (請參閱附錄 A「Message Queue 資料的平台特定位置」):

    .../instances/instanceName/props/config.properties

  3. 新增表示 imq.service.activelist 特性的項目 (如果項目不存在),並將 SSL 型服務納入清單。
  4. 依預設,特性包括 jms 和 admin 連線服務。您必須新增 ssljms 或 ssladmin 連線服務,或同是增加兩者 (因您要啟動的服務而異)。

    imq.service.activelist=jms,admin,ssljms,ssladmin

步驟 3:啟動代理程式

啟動代理程式,提供金鑰存放區密碼。您可以用以下任何一種方法提供密碼:

當您啟動具有 SSL 的代理程式或用戶端時,您可能會注意到它消耗了很多 CPU 週期,長達幾秒鐘。這是因為 Message Queue 使用 JSSE (Java 安全套接延伸) 以實施 SSL。JSSE 使用 java.security.SecureRandom 產生隨機數字。此方法建立初始隨機數種子要佔用大量時間,這就是您所看到 CPU 使用率增加的原因。建立種子之後,CPU 使用率會降至正常。

步驟 4:配置並執行 SSL 型用戶端

最後,請將用戶端配置為使用安全連線服務。TCP/IP 上有兩種安全連線情形:

這兩種用戶端將在以下各節中分別描述。

應用程式用戶端使用 ssljms

您必須確保用戶端在其類別路徑中擁有必要的安全套接延伸 (JSSE) .jar 檔案,而且您需要告知用戶端使用 ssljms 連線服務。

  1. 如果您的用戶端未使用 J2SDK1.4 (具有內建的 JSSE 與 JNDI 支援),請確保用戶端在其類別路徑中擁有以下 .jar 檔案:
  2. jsse.jar、jnet.jar、jcert.jar 和 jndi.jar

  3. 確保用戶端在其類別路徑中擁有以下 Message Queue .jar 檔案:
  4. imq.jar 和 jms.jar

  5. 啟動用戶端並將其連線至代理程式的 ssljms 服務。完成此作業的方法之一是輸入以下指令:
  6. java -DimqConnectionType=TLS clientAppName

    設定 imqConnectionType 可告知連線使用 SSL。

    如需有關在用戶端應用程式中使用 ssljms 連線服務的更多資訊,請參閱「Message Queue Developer's Guide for Java Clients」中有關使用管理物件的章節。

管理用戶端 (imqcmd) 使用 ssladmin

您可以透過使用 imqcmd 時加入 -secure 選項,建立安全管理連線。例如:

imqcmd list svc -b hostName:portNumber -u adminName -secure

其中 adminName 是 Message Queue 使用者儲存庫中的有效項目,指令會提示您輸入密碼。(如果您是使用平面檔案儲存庫,請參閱變更預設管理員密碼)。

列出連線服務是顯示 ssladmin 服務正在執行的一種方法,也是您可以成功建立安全 admin 連線的一種方法,如下所示:

列出指定代理程式上的所有服務:

主機                 主要連接埠

localhost            7676

服務名稱          連接埠號          服務狀態

admin            33984 (動態)     執行中

httpjms          -                未知

httpsjms         -                未知

jms              33983 (動態)     執行中

ssladmin         35988 (動態)     執行中

ssljms           動態             未知

成功列出服務。

配置使用簽名的憑證

簽名憑證提供的伺服器認證層級,高於自身簽名憑證的伺服器認證層級。若要實作簽名的憑證,請在金鑰存放區中安裝簽名的憑證,然後配置 Message Queue 用戶端,這樣在建立與 imqbrokerd 的 SSL 連線時會需要簽名的憑證。

您只能在用戶端和代理程式之間 (不能在叢集的多個代理程式之間) 實作簽名的憑證。

以下指示是假設您已完成在配置使用自身簽名的憑證中說明的步驟。當您遵循指示時,存取 http://java.sun.com 上有關 J2SE keytool 和 X.509 憑證的資訊,可能有所幫助。

步驟 1:取得並安裝簽名的憑證

    取得簽名的憑證
  1. 使用 J2SE keytool,為您剛產生的自身簽名憑證,產生憑證簽名請求 (CSR)。
  2. 範例:

    keytool -certreq -keyalg RSA -alias imq -file certreq.csr
            -keystore /etc/imq/keystore -storepass myStorePassword

    現在 CSR 將憑證封裝在 certreq.csr 檔案中。

  3. 請使用下列其中一種方法,產生或請求簽名憑證:
    • 請 Thawte 或 Verisign 等知名的認證機構 (CA) 簽署憑證。如需這項程序的詳細資訊,請參閱 CA 文件。
    • 使用 SSL 簽名軟體套裝軟體,自行簽署憑證。
    • 簽出的憑證是一串 ASCII 字元。如果您收到 CA 簽名的憑證,它可能是一個電子郵件附件或是訊息中的文字。

  4. 得到簽名的憑證後,請將其儲存在檔案中。
  5. 這些指示使用 broker.cer 範例名稱來代表代理程式憑證。

    安裝簽名的憑證
  1. 檢查 $JAVA_HOME/lib/security/cacerts,查看 J2SE 是否預設支援 CA,如下所示:
  2. keytool -v -list -keystore $JAVA_HOME/lib/security/cacerts

    此指令會列出系統金鑰存放區中的根 CA。

    如果有列出您的 CA,請跳過下一個步驟。

  3. 如果 J2SE 未支援您的 CA,請將認證機構的根憑證匯入 imqbrokerd 金鑰存放區中。
  4. 範例:

    keytool -import -alias ca -file ca.cer -noprompt -trustcacerts
            -keystore /etc/imq/keystore -storepass myStorePassword

    ca.cer 值是從 CA 獲得的 CA 根憑證。

    如果您使用 CA 測試憑證,可能需要匯入「測試 CA 根」憑證。您的 CA 應該會指示如何取得「測試 CA 根」憑證。

  5. 將簽名的憑證匯入金鑰存放區中,取代原始的自身簽名憑證。
  6. 例如:

    keytool -import -alias imq -file broker.cer -noprompt -trustcacerts
            -keystore /etc/imq/keystore -storepass myStorePassword

    broker.cer 值是您從 CA 獲得的簽名憑證所在的檔案。

現在 imqbrokerd 金鑰存放區具有簽名憑證,可用於 SSL 連線。

步驟 2:配置用戶端執行階段以請求簽名的憑證

    配置 Java 用戶端執行階段

依預設,Message Queue 用戶端執行階段信任 imqbrokerd,並接受任何呈上的憑證。現在您必須配置用戶端執行階段以請求簽名的憑證,並確保用戶端信任簽署憑證的 CA。

  1. 若要配置用戶端向 imqbrokerd 請求有效的簽名憑證,請將用戶端 ConnectionFactory 物件的 imqSSLIsHostTrusted 屬性設定為 false
  2. 請如步驟 4:配置並執行 SSL 型用戶端所述,嘗試與 imqbrokrd 建立 SSL 連線。
  3. 如果 broker 的憑證是由知名的 CA 簽署,可能會連線成功,您可以跳過下一個步驟。如果連線失敗出現憑證驗證錯誤,請執行下一個步驟。

  4. 請如下面幾節所述,在用戶端的信任存放區中安裝簽名 CA 根憑證。

配置有信任存放區的用戶端時,有三個選項:

下面幾節中有如何使用這些選項來安裝「Verisign 測試根 CA」的範例。根 CA 在 testrootca.cer 檔案中。這些範例假設 J2SE 安裝在 /usr/j2se 中。

安裝到預設系統 cacerts 檔案中

此範例將根 CA 安裝到 $JAVA_HOME/usr/jre/lib/security/cacerts 檔案中。

keytool -import -keystore /usr/j2se/jre/lib/security/cacerts
         -alias VerisignTestCA -file testrootca.cer -noprompt          -trustcacerts -storepass
myStorePassword

依預設,用戶端會搜尋此金鑰存放區,因此不需要進一步配置用戶端。

安裝到 jssecacerts 中

此範例將根 CA 安裝到 $JAVA_HOME/usr/jre/lib/security/jssecacerts 檔案中。

keytool -import -keystore /usr/j2se/jre/lib/security/jssecacerts
         -alias VerisignTestCA -file testrootca.cer -noprompt
         -trustcacerts -storepass myStorePassword

依預設,用戶端會搜尋此金鑰存放區,因此不需要進一步配置用戶端。

安裝到其他檔案中

此範例將根 CA 安裝到 /home/smith/.keystore 檔案中。

keytool -import -keystore /home/smith/.keystore
         -alias VerisignTestCA -file testrootca.cer -noprompt          -trustcacerts -storepass myStorePassword

依預設,用戶端不會搜尋此金鑰存放區,因此您必須為用戶端提供信任存放區的位置。若要執行這項操作,請在用戶端執行時,設定 javax.net.ssl.trustStore Java 系統的特性。例如:

javax.net.ssl.trustStore=/home/smith/.keystore


使用密碼檔案

有些類型的指令需要密碼。表 7-6 中的第一欄列出需要密碼的指令,第二欄列出需要密碼的原因。

表 7-6 使用密碼的指令

指令

用途

密碼的用途

imqbrokerd

啟動代理程式

存取 JDBC 型永久資料存放區、SSL 憑證金鑰存放區或 LDAP 使用者儲存庫

imqcmd

管理代理程式

認證已授權使用指令之管理使用者

imqdbmgr

管理 JDBC 型資料存放區

存取資料存放區

您可以在密碼檔案中指定這些密碼,並且使用 -passfile 選項來指定檔案名稱。下面是 -passfile 選項的格式:

imqbrokerd -passfile myPassfile


備註

您可以在舊版的指令行中使用 -p、-password、-dbpassword 和 -ldappassword 選項來指定密碼。但是這些選項已經被停用,將從未來的版本中移除。在目前的版本中,指令行中這些選項的任一值,會取代密碼檔案中相關的值。


安全考量

除非別人可以看到您的監視器,否則遵照提示來指定密碼是最安全的指定密碼方法。您也可以從指令行指定密碼檔案。但若使用非互動式指令,就必須使用密碼檔案。

密碼檔案沒有加密,您必須設定權限以防止無權限者存取此檔案。設定權限時請限制使用者檢視檔案,但是允許啟動代理程式的使用者讀取此檔。

密碼檔案內容

密碼檔案是純文字檔,包含一組特性和值。每一個值是指令使用的密碼。

密碼檔案可以包含表 7-7 中所示密碼:

表 7-7 密碼檔案中的密碼

密碼

影響的指令

說明

imq.imqcmd.password

imqcmd

指定 imqcmd 指令行的管理員密碼。每個指令都會認證此密碼。

imq.keystore.password

imqbrokerd

指定 SSL 型服務的金鑰存放區密碼。

imq.persist.jdbc.password

imqbrokerd

imdbmgr

如果必需,則指定用於開啟資料庫連線的密碼。

imq.user_repository.ldap.password

imqbrokerd

指定與識別名稱相關聯的密碼,此識別名稱指定給代理程式以連結至已配置的 LDAP 使用者儲存庫。

Message Queue 產品有提供密碼檔案範例。有關此範例檔案的位置,請參閱附錄 A「Message Queue 資料的平台特定位置」


建立稽核記錄

Message Queue 僅 Enterprise Edition 支援稽核記錄。啟用稽核記錄後,Message Queue 會記錄下列類型的事件:

若要將稽核記錄在 Message Queue 代理程式記錄檔中,請將 imq.audit.enabled 代理程式特性設定為 true。記錄檔中的所有稽核記錄都有關鍵字 AUDIT



上一頁      目錄      索引      下一頁     


文件號碼:819-3562。  Copyright © 2005 Sun Microsystems, Inc. 版權所有。