Sun ONE logo     上一個      目錄      索引      下一個     
Sun ONE Message Queue, Version 3.0.1 管理員指南



附錄 B   HTTP/HTTPS 支援 (企業版)

Sun™ ONE Message Queue (MQ) 企業版 (請參閱產品版本) 包括對 HTTP 連線和 HTTPS 連線的支援。(HTTPS 是透過 HTTP 的安全連線,並使用安全套接層標準。) 此支援可讓用戶端應用程式使用 HTTP 協定 (並非直接的 TCP 連線) 與代理程式通訊。本附錄描述用於實施此支援的架構,並介紹允許用戶端使用基於 HTTP 的連線進行 MQ 訊息傳送所需的設定工作。

HTTP/HTTPS 支援架構

MQ 訊息傳送可在 HTTP/HTTPS 連線的頂層執行。由於通常可允許 HTTP/HTTPS 連線通過防火牆,因此可允許透過防火牆將用戶端應用程式與代理程式分隔。

圖 B-1 顯示提供 HTTP/HTTPS 支援所需的主要元件。

  • 在用戶端,HTTP 傳輸驅動程式將 MQ 訊息封裝在 HTTP 請求中,並確保這些請求以正確的序列傳送至 Web Server。
  • 如有必要,JMS 用戶端可使用 HTTP 代理伺服器與代理程式通訊。代理的位址在啟動用戶端時使用指令行選項指定。請參閱使用 HTTP 代理,以獲得更多資訊。
  • HTTP 或 HTTPS 通道 Servlet (均隨附於 MQ) 被載入 Web Server 中,並用於在將 JMS 訊息轉寄至代理程式之前,將它們從用戶端 HTTP 請求中移除。HTTP/HTTPS 通道 Servlet 還將代理程式訊息傳送回用戶端,以回應用戶端發出的 HTTP 請求。單一 HTTP/HTTPS 通道 Servlet 可用於存取多重代理程式。

圖 B-1    HTTP/HTTPS 支援架構
顯示 HTTP 代理和 HTTP 通道 Servlet 如何使訊息通過防火牆的圖表。以文字介紹的圖。

  • 在代理程式端,httpjms 或 httpsjms 連線服務展開並多路傳輸從相應通道 Servlet 進來的訊息。
  • 如果 Web Server 發生故障並重新啟動,則所有連線均會復原且不影響用戶端。如果代理程式發生故障並重新啟動,則系統會拋出異常,且用戶端必須重新建立它們的連線。如果 Web Server 與代理程式均發生故障,且未重新啟動代理程式 (這種情況不太可能發生),則 Web Server 會復原用戶端連線並繼續等待代理程式連線,而不通知用戶端。若要避免這種情況,請務必重新啟動代理程式。

圖 B-1 中所示,HTTP 和 HTTPS 支援的架構非常相似。主要區別在於,對於 HTTPS (httpsjms 連線服務),通道 Servlet 具有與用戶端應用程式和代理程式的安全連線。

可透過已啟用 SSL 的通道 Servlet (MQ 的 HTTPS 通道 Servlet) 提供與代理程式的安全連線,此通道 Servlet 將自身簽名的證書傳送至請求連線的任何代理程式。代理程式使用此證書來設定與 HTTPS 通道 Servlet 的加密連線。一旦建立此連線,用戶端應用程式與通道 Servlet 之間的安全連線可由用戶端應用程式和 Web Server 協商。

實施 HTTP 支援

以下各節描述實施 HTTP 支援所需採取的步驟。

實施 HTTP 支援

  1. 在 Web Server 上佈署 HTTP 通道 Servlet。
  2. 配置代理程式的 httpjms 連線服務並啟動代理程式。
  3. 配置 HTTP 連線。

步驟 1. 在 Web Server 上佈署 HTTP 通道 Servlet

在 Web Server 上佈署 HTTP 通道 Servlet 有兩種常用方法:

  • 將其作為 JAR 檔案佈署 — 用於支援 Servlet 2.1 或較低版本的 Web Server
  • 將其作為 Web 歸檔 (WAR) 檔案佈署 — 用於支援 Servlet 2.2 或較高版本的 Web Server

作為 JAR 檔案佈署

佈署 MQ 通道 Servlet 由兩部分組成:使主機 Web Server 存取適當的 JAR 檔案,然後配置此 Web Server 以在啟動時載入 Servlet。

通道 Servlet JAR 檔案 (imqservlet.jar) 包含 HTTP 通道 Servlet 所需的所有類別,並且此檔案位於以下目錄:

IMQ_HOME/lib (在 Solaris 上為 /usr/share/lib/imq)

支援 Servlet 2.x 的任何 Web Server 均可用於載入此 Servlet。Servlet 類別名稱為:

com.sun.messaging.jmq.transport.
httptunnel.servlet.HttpTunnelServlet

Web Server 必須可參閱 imqservlet.jar 檔案。如果您想在不同的主機上執行 Web Server 和代理程式,則應將 imqservlet.jar 檔案的副本放在 Web Server 可存取的位置。

您還需要配置 Web Server,以在啟動時載入此 Servlet (請參閱範例︰佈署 HTTP 通道 Servlet)。

為了提昇效能,我們還建議您停用 Web Server 的存取記錄功能。

作為 Web 歸檔檔案佈署

將 HTTP 通道 Servlet 作為 WAR 檔案佈署需要使用 Web Server 提供的佈署機制。HTTP 通道 Servlet WAR 檔案 (imqhttp.war) 位於以下目錄:

IMQ_HOME/lib (在 Solaris 上為 /usr/share/lib/imq)

WAR 檔案包括佈署描述元,此描述元包含 Web Server 載入和執行 Servlet 所需的基本配置資訊。

步驟 2. 配置 httpjms 連線服務

依預設,HTTP 支援並未為 MQ 3.0.1 代理程式而啟用,因此您需要重新配置此代理程式以啟用 httpjms 連線服務。一旦重新配置,此代理程式便可啟動,如啟動代理程式中所述。

啟用 httpjms 連線服務

  1. 開啟位於以下位置的代理程式實例配置檔案:
  2. IMQ_VARHOME/instances/brokerName/props/config.properties
    (在 Solaris 上為 /var/imq/instances/brokerName/props/config.properties)

    其中 brokerName 為代理程式實例的名稱。

  3. httpjms 值新增至 imq.service.activelist 屬性:
  4. imq.service.activelist=jms,admin,httpjms

啟動時,代理程式會查找在其主機上執行的 Web Server 和 HTTP 通道 Servlet。但是,若要存取遠端通道 Servlet,您可以重新配置 servletHost 和 servletPort 連線服務屬性。

您還可以重新配置 pullPeriod 屬性,以提昇效能。表格 B-1 中詳細介紹了 httpjms 連線服務配置屬性。

表格 B-1    httpjms 連線服務屬性 

屬性名稱

描述

imq.httpjms.http.
servletHost

 

如有必要,請變更此值,以指定 HTTP 通道 Servlet 正在其上執行的主機 (主機名稱或 IP 位址) 的名稱。(這可以為遠端主機,或本地主機上的特定主機名稱。) 預設:localhost

 
imq.httpjms.http.
servletPort

 

變更此值,以指定代理程式用於存取 HTTP 通道 Servlet 的連接埠號。(如果 Web Server 上的預設連接埠已變更,則您必須相應地變更此屬性。) 預設:7675

 
imq.httpjms.http.
pullPeriod

 

指定每個用戶端發出可從代理程式中移除訊息的 HTTP 請求的間隔時間 (以秒為單位)。如果值為零或負數,則用戶端將始終擱置一個 HTTP 請求,以準備儘快地移除訊息。由於用戶端數量較大,這可能會導致 Web Server 資源大量外流,並且伺服器可能沒有回應。在此類情況下,您應將 pullPeriod 屬性設定為正的秒數。此作業將設定用戶端的 HTTP 傳輸驅動程式在發出後續移除請求之前等待的時間。將此值設定為正數可保存 Web Server 資源,但會影響用戶端所監視的回應次數。預設:-1

 

步驟 3. 配置 HTTP 連線

用戶端應用程式必須使用已適當配置的連線工廠受管理物件,以建立與代理程式的 HTTP 連線。本節說明 HTTP 連線配置問題。

設定連線工廠屬性

若要實施 HTTP 支援,您應設定以下連線工廠屬性 (請參閱連線工廠受管理物件):

  • imqConnectionType 屬性設定為 HTTP
  • imqConnectionURL 設定為 HTTP 通道 Servlet URL
  • http://hostName:port/imq/tunnel

您可以透過以下方法之一設定連線工廠屬性:

  • 使用可建立連線工廠受管理物件 (請參閱新增連線工廠) 之 imqobjmgr 指令的 -o 選項,或在使用管理主控台 (imqadmin) 建立連線工廠受管理物件時設定屬性。
  • 使用可啟動用戶端應用程式之指令的 -D 選項 (請參閱「MQ Developer's Guide」)。
  • 當您有計劃地藉由用戶端應用程式碼建立連線工廠後,請使用 JMS API 呼叫設定它的屬性 (請參閱「MQ Developer's Guide」)。

使用單一 Servlet 存取多重代理程式

如果您要執行多重代理程式,則無需配置多重 Web Server 和 Servlet 實例。您可以在同時執行的代理程式中共用單一 Web Server 和 HTTP 通道 Servlet 實例。為了執行此作業,您必須配置 imqConnectionURL 連線工廠屬性,如下所示:

http://hostName:port/imq/tunnel?ServerName=hostName:brokerName

其中 hostName 為代理程式主機名稱,brokerName 為您希望用戶端存取的特定代理程式實例的名稱。

若要檢查您是否已為 hostName brokerName 輸入正確的字串,則應透過從瀏覽器存取 Servlet URL 產生 HTTP 通道 Servlet 的狀態報告。此報告將列出 Servlet 要存取的所有代理程式:


HTTP tunnel servlet ready.
Servlet Start Time :Thu May 30 01:08:18 PDT 2002
Accepting TCP connections from brokers on port : 7675
Total available brokers = 2
Broker List :
   jpgserv:broker2
   cochin:broker1

使用 HTTP 代理

如果您要使用 HTTP 代理存取 HTTP 通道 Servlet:

  • http.proxyHost 系統屬性設定為代理伺服器主機名稱。
  • http.proxyPort 系統屬性設定為代理伺服器連接埠號。

您可以使用可啟動用戶端應用程式之指令的 -D 選項來設定這些屬性。

範例︰佈署 HTTP 通道 Servlet

本節描述如何在 Sun ONE WEB Server 上將 HTTP 通道 Servlet 作為 JAR 檔案和 WAR 檔案進行佈署。您使用的方法取決於 Sun ONE Web Server 的版本:如果它不支援 Servlet 2.2 或較高版本,它將無法處理 WAR 檔案佈署。

作為 JAR 檔案佈署

以下說明參考了使用基於瀏覽器的管理 GUI 之 Sun ONE Web Server FastTrack Edition 4.1 上的佈署。此程序由以下常用步驟組成:

  1. 新增 Servlet
  2. 配置 Servlet 虛擬路徑
  3. 載入 Servlet
  4. 停用 Servlet 存取記錄

這些步驟將在以下各小節中描述。您可以透過使用 Web 瀏覽器存取 Servlet URL 來驗證成功的 HTTP 通道 Servlet 佈署。它應顯示狀態資訊。

新增 Servlet

新增通道 Servlet

  1. 選取 [Servlets] 標籤。
  2. 選擇 [配置 Servlet 屬性]。
  3. 在 [Servlet 名稱] 欄位中,為通道 Servlet 指定名稱。
  4. 將 [Servlet 程式碼 (類別名稱)] 欄位設定為以下值:
  5. com.sun.messaging.jmq.transport.
    httptunnel.servlet.HttpTunnelServlet

  6. 在 [Servlet 類別路徑] 欄位中輸入 imqservlet.jar 的完整路徑。例如:
  7. IMQ_HOME/lib/imqservlet.jar
    (在 Solaris 上為 /usr/share/lib/imq/imqservlet.jar)

  8. 在 [Servlet 引數] 欄位中,輸入任何選擇性引數,如表格 B-2 中所示:
  9. 表格 B-2    用於佈署 HTTP 通道 Servlet JAR 檔案的 Servlet 引數

    引數

    預設值

    參考

    servletHost

     

    所有主機

     

    請參閱表格 B-1

     

    servletPort

     

    7675

     

    請參閱表格 B-1

     

    如果要使用這兩個引數,請使用逗號將它們分隔:

    servletPort=連接埠號,
    servletHost=...

    serverHostserverPort 引數僅適用於 Web Server 和代理程式之間的通訊,並且僅在預設值有問題時才設定。但是,在此情況下,您還必須相應地設定代理程式配置屬性 (請參閱表格 B-1),例如:

    imq.httpjms.http.servletPort

配置 Servlet 虛擬路徑 (Servlet URL)

為通道 Servlet 配置虛擬路徑 (Servlet URL)

  1. 選取 [Servlets] 標籤。
  2. 選擇 [配置 Servlet 虛擬路徑轉換]。
  3. 設定 [虛擬路徑] 欄位。
  4. 例如,如果您希望 URL 為 http://hostName:port/imq/tunnel,請在 [虛擬路徑] 欄位中輸入以下字串:

    /imq/tunnel

  5. 將 [Servlet 名稱] 欄位設定為與新增 Servlet步驟 3 中相同的值。

載入 Servlet

在啟動 Web Server 時載入通道 Servlet

  1. 選取 [Servlets] 標籤。
  2. 選擇 [配置全域屬性]。
  3. 在 [啟動 Servlets] 欄位中,輸入與新增 Servlet步驟 3 中相同的 Servlet 名稱值。

停用伺服器存取記錄

您不必停用伺服器存取記錄,但是如果您停用記錄,將會獲得更好的效能。

停用伺服器存取記錄

  1. 選取 [狀態] 標籤。
  2. 選擇 [記錄個人喜好頁面]。
  3. 使用記錄用戶端存取控制來停用記錄。

作為 WAR 檔案佈署

以下說明參考了 Sun ONE Web Server 6.0 Service Pack 2 上的佈署。您可以透過使用 Web 瀏覽器存取 Servlet URL 來驗證成功的 HTTP 通道 Servlet 佈署。它應顯示狀態資訊。

將 HTTP 通道 Servlet 作為 WAR 檔案佈署

  1. 在基於瀏覽器的管理 GUI 中,選取 [虛擬伺服器類別] 標籤並選取 [管理類別]。
  2. 選取適當的虛擬伺服器類別名稱 (如預設類別),然後按一下 [管理] 按鈕。
  3. 選取 [管理虛擬伺服器]。
  4. 選取適當的虛擬伺服器名稱,然後按一下 [管理] 按鈕。
  5. 選取 [Web 應用程式] 標籤。
  6. 按一下 [佈署 Web 應用程式]。
  7. 為 [WAR 檔案開啟] 和 [WAR 檔案路徑] 欄位選取適當的值,以便指向 imqhttp.war 檔案。此檔案可在以下目錄中找到:
  8. IMQ_HOME/lib (在 Solaris 上為 /usr/share/lib/imq)

  9. 在 [應用程式 URI] 欄位中,輸入「/imq」(無引號)。
  10. 輸入應佈署 Servlet 的安裝目錄路徑 (通常位於 Sun ONE Web Server 安裝根目錄下)。
  11. 按一下 OK
  12. 重新啟動 Web Server 實例。

此時,Servlet 可從以下位址獲得:

http://hostName:port/imq/tunnel

此時,用戶端可使用此 URL,以使用 HTTP 連線而連線至訊息服務。

實施 HTTPS 支援

以下各節描述實施 HTTPS 支援所需採取的步驟。它們與實施 HTTP 支援中的那些步驟,以及產生和存取 SSL 證書所需的步驟相似。

實施 HTTPS 支援

  1. 為 HTTPS 通道 Servlet 產生自身簽名的證書。
  2. 在 Web Server 上佈署 HTTPS 通道 Servlet。
  3. 配置代理程式的 httpsjms 連線服務並啟動代理程式。
  4. 配置 HTTPS 連線。

以下各節中將更加詳細地說明這些步驟中的每一步。

步驟 1. 為 HTTPS 通道 Servlet 產生自身簽名的證書

在假設用戶端正與已知且可信任的伺服器通訊的情況下,MQ 3.0.1 中的 SSL 支援可確保線上資料的安全。因此在 MQ 3.0.1 中,僅使用自身簽名的伺服器證書即可實施 SSL。在 httpsjms 連線服務架構中,HTTPS 通道 Servlet 是代理程式與應用程式用戶端的伺服器。

執行 imqkeytool 公用程式,以便為通道 Servlet 產生自身簽名的證書。在指令提示符號下輸入以下內容:

imqkeytool -servlet 鍵值儲存區位置

此公用程式將提示您提供它所需的資訊。(在 Unix 系統上,為了擁有建立鍵值儲存區的許可權,您可能需要以超級使用者 [root] 的身份執行 imqkeytool。)

首先,imqkeytool 提示您提供鍵值儲存區密碼以及某些組織資訊,然後提示您確認。接收到確認之後,它會在產生鍵對時暫停。然後它會要求您提供密碼,以鎖定特定的鍵對 (鍵密碼);您應輸入 [Return] 以回應此提示:這會使鍵密碼與鍵值儲存區密碼相同。



請記住您所提供的密碼,稍後您需要將此密碼提供給通道 Servlet,以便它可開啟鍵值儲存區。



執行 imqkeytool 可執行 JDK keytool 公用程式,以產生自身簽名的證書,並將其放在位於鍵值儲存區位置引數所指定的 MQ 鍵值儲存區檔案中。(此鍵值儲存區的格式與 JDK1.2 keytool 支援的格式相同。)



HTTPS 通道 Servlet 必須可參閱此鍵值儲存區。確保您將位於鍵值儲存區位置中已產生的鍵值儲存區移動/複製到 HTTPS 通道 Servlet 可存取的位置 (請參閱步驟 2. 在 Web Server 上佈署 HTTPS 通道 Servlet)。



步驟 2. 在 Web Server 上佈署 HTTPS 通道 Servlet

在 Web Server 上佈署 HTTPS 通道 Servlet 有兩種常用方法:

  • 將其作為 JAR 檔案佈署 — 用於支援 Servlet 2.1 或較低版本的 Web Server
  • 將其作為 Web 歸檔 (WAR) 檔案佈署 — 用於支援 Servlet 2.2 或較高版本的 Web Server

在這兩種情況下,您都應確保為 Web Server 啟動加密,從而讓用戶端與代理程式之間進行端對端安全通訊。

作為 JAR 檔案佈署

佈署 MQ 通道 Servlet 由兩部分組成:使主機 Web Server 存取適當的 JAR 檔案,然後配置此 Web Server 以在啟動時載入 Servlet。

通道 Servlet JAR 檔案 (imqservlet.jar) 包含 HTTPS 通道 Servlet 所需的所有類別,並且此檔案位於以下目錄:

IMQ_HOME/lib (在 Solaris 上為 /usr/share/lib/imq)

支援 Servlet 2.x 的任何 Web Server 均可用於載入此 Servlet。Servlet 類別名稱為:

com.sun.messaging.jmq.transport.
httptunnel.servlet.HttpsTunnelServlet
.

Web Server 必須可參閱 imqservlet.jar 檔案。如果您想在不同的主機上執行 Web Server 和代理程式,則應將 imqservlet.jar 檔案的副本放在 Web Server 可存取的位置。

您還需要配置 Web Server,以在啟動時載入此 Servlet (請參閱範例︰佈署 HTTPS 通道 Servlet)。

確保 JSSE JAR 檔案在類別路徑中,以便在 Web Server 中執行 Servlet。檢查 Web Server 的說明文件,以便瞭解如何執行此作業。

配置 Web Server 的一個重要方面是指定自身簽名證書的位置和密碼,以便 HTTPS 通道 Servlet 使用此證書來建立與代理程式的安全連線。您必須將步驟 1. 為 HTTPS 通道 Servlet 產生自身簽名的證書中建立的鍵值儲存區放在 HTTPS 通道 Servlet 可存取的位置。

為了提昇效能,我們還建議您停用 Web Server 的存取記錄功能。

作為 Web 歸檔檔案佈署

將 HTTPS 通道 Servlet 作為 WAR 檔案佈署需要使用 Web Server 提供的佈署機制。HTTPS 通道 Servlet WAR 檔案 (imqhttps.war) 位於以下目錄:

IMQ_HOME/lib (在 Solaris 上為 /usr/share/lib/imq)

WAR 檔案包括佈署描述元,此描述元包含 Web Server 載入和執行 Servlet 所需的基本配置資訊。

但是,imqhttps.war 檔案的佈署描述元無法知道您已將通道 Servlet 所需的鍵值儲存區檔案放在何處 (請參閱步驟 1. 為 HTTPS 通道 Servlet 產生自身簽名的證書)。這要求您編輯通道 Servlet 的佈署描述元 (XML 檔案),以在佈署 imqhttps.war 檔案之前指定鍵值儲存區的位置。

步驟 3. 配置 httpsjms 連線服務

依預設,HTTPS 支援並未為 MQ 3.0.1 代理程式而啟用,因此您需要重新配置此代理程式以啟用 httpsjms 連線服務。一旦重新配置,此代理程式便可啟動,如啟動代理程式中所述。

啟用 httpsjms 連線服務

  1. 開啟位於以下位置的代理程式實例配置檔案:
  2. IMQ_VARHOME/instances/brokerName/props/config.properties
    (在 Solaris 上為 /var/imq/instances/brokerName/props/config.properties)

    其中 brokerName 為代理程式實例的名稱。

  3. httpsjms 值新增至 imq.service.activelist 屬性:
  4. imq.service.activelist=jms,admin,httpsjms

啟動時,代理程式會查找在其主機上執行的 Web Server 和 HTTPS 通道 Servlet。但是,若要存取遠端通道 Servlet,您可以重新配置 servletHost 和 servletPort 連線服務屬性。

您還可以重新配置 pullPeriod 屬性,以提昇效能。表格 B-3 中詳細介紹了 httpsjms 連線服務配置屬性。

表格 B-3    httpsjms 連線服務屬性 

屬性名稱

描述

imq.httpsjms.https.
servletHost

 

如有必要,請變更此值,以指定 HTTPS 通道 Servlet 正在其上執行的主機 (主機名稱或 IP 位址) 的名稱。(這可以為遠端主機,或本地主機上的特定主機名稱。) 預設:localhost

 
imq.httpsjms.https.
servletPort

 

變更此值,以指定代理程式用於存取 HTTPS 通道 Servlet 的連接埠號。(如果 Web Server 上的預設連接埠已變更,則您必須相應地變更此屬性。) 預設:7674

 
imq.httpsjms.https.
pullPeriod

 

指定每個用戶端發出可從代理程式中移除訊息的 HTTP 請求的間隔時間 (以秒為單位)。如果值為零或負數,則用戶端將始終擱置一個 HTTP 請求,以準備儘快地移除訊息。由於用戶端數量較大,這可能會導致 Web Server 資源大量外流,並且伺服器可能沒有回應。在此類情況下,您應將 pullPeriod 屬性設定為正的秒數。此作業將設定用戶端的 HTTP 傳輸驅動程式在發出後續移除請求之前等待的時間。將此值設定為正數可保存 Web Server 資源,但會影響用戶端所監視的回應次數。預設:-1

 

步驟 4. 配置 HTTPS 連線

用戶端應用程式必須使用已適當配置的連線工廠受管理物件,以建立與代理程式的 HTTPS 連線。

但是,用戶端還必須對 Java 安全套接延伸 (JSSE) 提供的 SSL 程式庫擁有存取權,並且還必須具有超級使用者證書。SSL 程式庫隨附於 JDK 1.4。如果您具有較低的 JDK 版本,請參閱配置 JSSE,否則請繼續執行匯入超級使用者證書

一旦解決這些問題,您可以繼續配置 HTTPS 連線。

配置 JSSE

配置 JSSE

  1. 將 JSSE JAR 檔案複製到 JRE_HOME/lib/ext 目錄。
  2. jsse.jar、jnet.jar 和 jcert.jar

  3. 靜態新增 JSSE 安全性供應程式,方法為透過將
  4. security.provider.n=com.sun.net.ssl.internal.ssl.Provider

    新增至 JRE_HOME/lib/security/java.security 檔案 (其中 n 為安全性供應程式套裝軟體的下一個可用優先順序號)。

  5. 如果未使用 JDK1.4,則您需要使用可啟動用戶端應用程式之指令的 -D 選項,來設定以下 JSSE 屬性:
  6. java.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol

匯入超級使用者證書

如果 CA (為您的 Web Server 證書簽名) 的超級使用者證書依預設不在信任資料庫中,或者您使用的是專用 Web Server 證書,則您必須將此證書新增至信任資料庫。如果出現此情況,請遵循以下說明,否則請前往設定連線工廠屬性

假設此證書儲存在 cert_file 中,並且 trust_store_file 為您的鍵值儲存區,請執行以下指令:

JRE_HOME/bin/keytool -import -trustcacerts
-alias alias_for_certificate -file cert_file
-keystore trust_store_file

對以下問題回答 YES:信任此證書嗎?

您還需要使用可啟動用戶端應用程式之指令的 -D 選項,來指定以下 JSSE 屬性:

javax.net.ssl.trustStore=trust_store_file

javax.net.ssl.trustStorePassword=trust_store_passwd

設定連線工廠屬性

若要實施 HTTPS 支援,您應設定以下連線工廠屬性 (請參閱連線工廠受管理物件):

  • imqConnectionType 屬性設定為 HTTP
  • 透過 HTTPS 通道 Servlet (而不是 HTTP 通道 Servlet) 進行佈署和連線,可建立與代理程式的安全連線。但是,兩者均使用相同的連線類型。

  • imqConnectionURL 設定為 HTTPS 通道 Servlet URL

https://hostName:port/imq/tunnel

您可以透過以下方法之一設定連線工廠屬性:

  • 使用可建立連線工廠受管理物件 (請參閱新增連線工廠) 之 imqobjmgr 指令的 -o 選項,或在使用管理主控台 (imqadmin) 建立連線工廠受管理物件時設定屬性。
  • 使用可啟動用戶端應用程式的指令的 -D 選項 (請參閱「MQ Developer's Guide」)。
  • 當您有計劃地藉由用戶端應用程式碼建立連線工廠後,請使用 JMS API 呼叫設定它的屬性 (請參閱「MQ Developer's Guide」)。

使用單一 Servlet 存取多重代理程式

如果您要執行多重代理程式,則無需配置多重 Web Server 和 Servlet 實例。您可以在同時執行的代理程式中共用單一 Web Server 和 HTTPS 通道 Servlet 實例。為了執行此作業,您必須配置 imqConnectionURL 連線工廠屬性,如下所示:

https://hostName:port/imq/tunnel?ServerName=hostName:brokerName

其中 hostName 為代理程式主機名稱,brokerName 為您希望用戶端存取的特定代理程式實例的名稱。

若要檢查您是否已為 hostName brokerName 輸入正確的字串,則應透過從瀏覽器存取 Servlet URL 產生 HTTPS 通道 Servlet 的狀態報告。此報告將列出 Servlet 要存取的所有代理程式:


HTTPS tunnel servlet ready.
Servlet Start Time :Thu May 30 01:08:18 PDT 2002
Accepting TCP connections from brokers on port : 7674
Total available brokers = 2
Broker List :
   jpgserv:broker2
   cochin:broker1

使用 HTTP 代理

如果您要使用 HTTP 代理存取 HTTPS 通道 Servlet:

  • http.proxyHost 系統屬性設定為代理伺服器主機名稱。
  • http.proxyPort 系統屬性設定為代理伺服器連接埠號。

您可以使用可啟動用戶端應用程式之指令的 -D 選項來設定這些屬性。

範例︰佈署 HTTPS 通道 Servlet

本節描述如何在 Sun ONE Web Server 上將 HTTPS 通道 Servlet 作為 JAR 檔案和 WAR 檔案進行佈署。您使用的方法取決於 Sun ONE Web Server 的版本:如果它不支援 Servlet 2.2 或較高版本,它將無法處理 WAR 檔案佈署。

作為 JAR 檔案佈署

以下說明參考了使用基於瀏覽器的管理 GUI 之 Sun ONE Web Server FastTrack Edition 4.1 上的佈署。此程序由以下常用步驟組成:

  1. 新增 Servlet
  2. 配置 Servlet 虛擬路徑
  3. 載入 Servlet
  4. 停用 Servlet 存取記錄

這些步驟將在以下各小節中描述。您可以透過使用 Web 瀏覽器存取 Servlet URL 來驗證成功的 HTTP 通道 Servlet 佈署。它應顯示狀態資訊。

新增 Servlet

新增通道 Servlet

  1. 選取 [Servlets] 標籤。
  2. 選擇 [配置 Servlet 屬性]。
  3. 在 [Servlet 名稱] 欄位中,為通道 Servlet 指定名稱。
  4. 將 [Servlet 程式碼 (類別名稱)] 欄位設定為以下值:
  5. com.sun.messaging.jmq.transport.
    httptunnel.servlet.HttpsTunnelServlet

  6. 在 [Servlet 類別路徑] 欄位中輸入 imqservlet.jar 的完整路徑。例如:
  7. IMQ_HOME/lib/imqservlet.jar
    (在 Solaris 上為 /usr/share/lib/imq/imqservlet.jar)

  8. 在 [Servlet 引數] 欄位中,輸入所需引數和選擇性引數,如表格 B-4 中所示。
  9. 表格 B-4    用於佈署 HTTPS 通道 Servlet JAR 檔案的 Servlet 引數

    引數

    預設值

    需要嗎?

    另請參閱

    keystoreLocation
     

     

    需要

     

    表格 8-8

     
    keystorePassword
     

     

    需要

     

    表格 8-8

     
    serverHost
     

    所有主機

     

    不需要

     

    表格 B-3

     
    serverPort
     

    7674

     

    不需要

     

    表格 B-3

     

    使用逗號將引數分隔,例如:

    keystoreLocation=鍵值儲存區位置, keystorePassword=鍵值儲存區密碼, servletPort=連接埠號

    serverHostserverPort 引數僅適用於 Web Server 和代理程式之間的通訊,並且僅在預設值有問題時才設定。但是,在此情況下,您還必須相應地設定代理程式配置屬性 (請參閱表格 B-3),例如:

    imq.httpsjms.https.servletPort

配置 Servlet 虛擬路徑 (Servlet URL)

為通道 Servlet 配置虛擬路徑 (Servlet URL)

  1. 選取 [Servlets] 標籤。
  2. 選擇 [配置 Servlet 虛擬路徑轉換]。
  3. 設定 [虛擬路徑] 欄位。
  4. 例如,如果您希望 URL 為 http://hostName:port/imq/tunnel,請在 [虛擬路徑] 欄位中輸入以下字串:

    /imq/tunnel

  5. 將 [Servlet 名稱] 欄位設定為與新增 Servlet步驟 3 中相同的值。

載入 Servlet

在啟動 Web Server 時載入通道 Servlet

  1. 選取 [Servlets] 標籤。
  2. 選擇 [配置全域屬性]。
  3. 在 [啟動 Servlets] 欄位中,輸入與新增 Servlet步驟 3 中相同的 Servlet 名稱值。

停用伺服器存取記錄

您不必停用伺服器存取記錄,但是如果您停用記錄,將會獲得更好的效能。

停用伺服器存取記錄

  1. 選取 [狀態] 標籤。
  2. 選擇 [記錄個人喜好頁面]。
  3. 使用記錄用戶端存取控制來停用記錄。

作為 WAR 檔案佈署

以下說明參考了 Sun ONE Web Server 6.0 Service Pack 2 上的佈署。您可以透過使用 Web 瀏覽器存取 Servlet URL 來驗證成功的 HTTPS 通道 Servlet 佈署。它應顯示狀態資訊。

在佈署 HTTPS 通道 Servlet 之前,請確保 JSSE JAR 檔案包含在 Web Server 的類別路徑中。執行此作業的最簡單方法為將 jsse.jarjnet.jarjcert.jar 複製到 IWS60_TOPDIR/bin/https/jre/lib/ext

此外,在佈署 HTTPS 通道 Servlet 之前,您必須修改其佈署描述元,以指向您放置鍵值儲存區檔案的位置,並指定鍵值儲存區密碼。

修改 HTTPS 通道 Servlet WAR 檔案

  1. 將 WAR 檔案複製到暫存目錄。
  2. $ cp IMQ_HOME/lib/imqhttps.war /tmp
    (在 Solaris 上為 $ cp /usr/share/lib/imq/imqhttps.war /tmp)

  3. 將此暫存目錄變為您的目前目錄。
  4. $ cd /tmp

  5. 擷取 WAR 檔案的內容。
  6. $ jar xvf imqhttps.war

  7. 列出 WAR 檔案的佈署描述元。
  8. $ ls -l WEB-INF/web.xml

  9. 編輯 web.xml 檔案,以便為 keystoreLocationkeystorePassword 引數 (如有必要,還包括 serverPortserverHost 引數) 提供正確的值。
  10. 重新組合 WAR 檔案的內容。
  11. $ jar uvf imqhttps.war WEB-INF/web.xml

此時,您可以使用已修改的 imqhttps.war 檔案來佈署 HTTPS 通道 Servlet。(如果您擔心鍵值儲存區密碼洩漏,則可以使用檔案系統許可權來限制他人對 imqhttps.war 檔案的存取。)

將 HTTPS 通道 Servlet 作為 WAR 檔案佈署

  1. 在基於瀏覽器的管理 GUI 中,選取 [虛擬伺服器類別] 標籤。按一下 [管理類別]。
  2. 選取適當的虛擬伺服器類別名稱 (如預設類別),然後按一下 [管理] 按鈕。
  3. 選取 [管理虛擬伺服器]。
  4. 選取適當的虛擬伺服器名稱,然後按一下 [管理] 按鈕。
  5. 選取 [Web 應用程式] 標籤。
  6. 按一下 [佈署 Web 應用程式]。
  7. 為 [WAR 檔案開啟] 和 [WAR 檔案路徑] 欄位選取適當的值,以便指向已修改的 imqhttps.war 檔案 (請參閱修改 HTTPS 通道 Servlet WAR 檔案。)
  8. 在 [應用程式 URI] 欄位中,輸入「/imq」(無引號)。
  9. 輸入應佈署 Servlet 的安裝目錄路徑 (通常位於 Sun ONE Web Server 安裝根目錄下)。
  10. 按一下 OK
  11. 重新啟動 Web Server 實例。

此時,Servlet 可從以下位址獲得:

https://hostName:port/imq/tunnel

此時,用戶端可使用此 URL,以使用安全 HTTPS 連線而連線至訊息服務。


上一個      目錄      索引      下一個     
Copyright 2002 Sun Microsystems, Inc.。版權所有。


文件號碼 817-5021-10