Sun Java System Message Queue 3.7 UR1 管理指南

使用簽署的憑證

簽署憑證提供的伺服器認證,比自我簽署憑證的伺服器認證更安全。您只能在用戶端和代理程式之間 (不能在叢集的多個代理程式之間) 實作簽署憑證。除了上述配置自我簽署憑證所需步驟之外,您還需要執行下列額外的步驟。後續小節會詳細說明這些步驟。

Procedure使用簽署的憑證

  1. 在金鑰庫中安裝憑證。

  2. 配置 Message Queue 用戶端在建立與代理程式的 SSL 型連線時,請求簽署憑證。

取得並安裝簽署的憑證

下列程序說明如何取得並安裝簽署的憑證。

Procedure取得簽署的憑證

  1. 使用 J2SE keytool 指令,為您在上節中產生的自我簽署憑證,產生憑證簽署請求 (CSR)。

    下列網站提供有關 keytool 指令的資訊:

    http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html

    範例:


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

    這會產生 CSR,將憑證封裝在指定的檔案中 (此範例中的 certreq.csr )。

  2. 使用 CSR 產生或請求簽署的憑證。

    您可以使用下列方法之一:

    • 請 Thawte 或 Verisign 等知名的憑證授權單位 (CA) 簽署憑證。如需如何執行此作業的詳細資訊,請參閱您的 CA 文件。

    • 使用 SSL 簽署套裝軟體,自行簽署憑證。

      簽出的憑證是一串 ASCII 字元。如果您收到 CA 簽署的憑證,它可能是一個電子郵件附件或是郵件中的文字。

  3. 將簽署的憑證儲存在檔案中。

    以下說明中,使用 broker.cer 範例名稱來代表代理程式憑證。

Procedure安裝簽署的憑證

  1. 檢查 J2SE 依預設是否支援您的憑證授權單位。

    以下指令會列出系統金鑰庫中的根 CA:

    keytool -v -list -keystore $JAVA_HOME/lib/security/cacerts
    

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

  2. 如果 J2SE 未支援您的憑證授權單位,請將 CA 的根憑證匯入 Message Queue 金鑰庫中。

    範例:

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

    其中 ca.cer 檔案包含 CA 提供的根憑證。

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

  3. 將簽署的憑證匯入金鑰庫中,替代原始的自我簽署憑證。

    範例:

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

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

    現在 Message Queue 金鑰庫包含簽署憑證,可用於 SSL 連線。

配置 Message Queue 用戶端執行階段以請求簽署憑證

現在您必須配置 Message Queue 用戶端執行階段以請求簽署的憑證,並確保用戶端信任簽署此憑證的憑證授權單位。

Procedure配置用戶端執行階段以請求簽署的憑證

  1. 將連線工廠的 imqSSLIsHostTrusted 屬性設定為 false

    依預設,用戶端將用來建立代理程式連線的連線工廠物件之 imqSSLIsHostTrusted 屬性設定為 true,這表示用戶端執行階段會接受所出示的任何憑證。您必須將此值變更為 false,讓用戶端執行階段嘗試驗證所出示的所有憑證。如果憑證簽署者未出現在用戶端的信任清單存放區,驗證便會失敗。

  2. 驗證簽署的授權單位是否已在用戶端的信任清單存放區中註冊。

    若要測試用戶端是否會接受您的憑證授權單位所簽署的憑證,請嘗試建立 SSL 連線,如上節配置並執行 SSL 型用戶端中所述。如果 CA 列在用戶端的信任存放區中,連線便會成功,您可以跳過下一個步驟。如果連線失敗出現憑證驗證錯誤,請執行下一個步驟。

  3. 在用戶端的信任存放區中安裝簽署 CA 的根憑證。

    依預設,用戶端會搜尋金鑰庫檔案 cacertsjssecacerts,因此如果憑證安裝在以上其中一個檔案中,便不需要進一步配置。下列範例會將來自 Verisign 憑證授權單位,檔名為 testrootca.cer 的測試根憑證檔案,安裝到預設系統憑證檔案 cacerts 。此範例假設 J2SE 安裝在 $JAVA_HOME/usr/j2se 目錄中:

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

    建議使用的替代選項,是將根憑證安裝到替代系統憑證檔案 jssecacerts

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

    第三個可能方法是將根憑證安裝到其他金鑰庫檔案中,並且配置用戶端將其視為信任存放區。下列範例會安裝到 /home/smith/.keystore 檔案中:

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

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

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