Websphere MQ Java/JMS 客戶端的 SSL 配置

發表于:2007-06-23來源:作者:點擊數: 標簽:
本文不僅向您展示了如何配置從 Java/JMS 客戶端到 IBM WebSphere MQ Queue Manager 的 安全 套接字層連接,而且還介紹了 測試 證書的創建(但沒有介紹任何 MQ 配置信息)。本文是一篇純粹的 Java/JMS 客戶端指南文章,文中還需要使用到 IBM SDK。 文中的第 1

   

本文不僅向您展示了如何配置從 Java™/JMS 客戶端到 IBM® WebSphere® MQ Queue Manager 的安全套接字層連接,而且還介紹了測試證書的創建(但沒有介紹任何 MQ 配置信息)。本文是一篇純粹的 Java/JMS 客戶端指南文章,文中還需要使用到 IBM SDK。

文中的第 1 步、第 3 步和第 4 步需要配置 SSL 連接。如果希望配置客戶端身份驗證,執行第 2 步即可。為了降低復雜性并簡化任何潛在問題的調試,我不推薦在一開始就使用客戶端身份驗證。在擁有了基本的 SSL 連接后,就可以配置客戶端身份驗證了。

如果在操作過程中遇到配置問題,這可能有助于指定調試標志:-Djavax.net.debug=true。



Websphere MQ Java/JMS 客戶端的 SSL 配置(圖一)


1. 創建 trustStore

顧名思義,trustStore 持有您所信任的 Queue Manager 簽名 CA 所頒發的證書。這意味著當 Java/JMS 客戶端連接到 Queue Manager 時,它需要將其證書發送給我們作為初始 SSL 握手的一部分。負責處理所有 SSL 通信的 Java Secure Socket Extension (JSSE) 將通過查找 trustStore 來驗證剛剛發送的證書。如果無法驗證該證書,則連接將被終止。

要創建 trustStore 并導入證書,您可以使用 IBM Key Management 工具,該工具是 Websphere MQ V6 的一部分:

  1. 在“開始”欄中,選擇 Programs => IBM Websphere MQ => IBM Key Management。
  2. 當 IBM Key Management 啟動后,單擊 New 并設置下列值:
    Key database type
    JKS
    File name
    trustStore
    Location
    所選擇的位置
  3. 單擊 OK 繼續。

    圖 1

    Websphere MQ Java/JMS 客戶端的 SSL 配置(圖二)

  4. 系統現在提示您輸入所選擇的密碼。該密碼只在您希望打開 trustStore 并添加證書到其中時才需要用到。如果 JSSE 只用作 trustStore,那么它不需要使用密碼。在本例中,請輸入密碼。
  5. 單擊 OK 繼續。到現在為止,應該已創建了 trustStore,您可以把信任的 CA 所頒發的證書導入其中。
  6. 選擇標簽 Key database content 下方的下拉框。
  7. 選擇 Signer Certificates。

    圖 2

    Websphere MQ Java/JMS 客戶端的 SSL 配置(圖三)

  8. 單擊 Add。系統將提示您選擇希望添加的證書的位置。該證書可以是 Queue Manager 證書(如果您正在為測試使用自簽證書),也可以是 CA(為您頒發 Queue Manager 證書)頒發的證書。有關為 SSL 配置 Queue Manager 的信息,請參閱 MQ Security 手冊的第 13 章。
  9. 請輸入下列數據:
    Data type
    二進制 DER 數據
    Certificate file name
    <Queue Manager 證書的名稱>
    Location
    <證書位置>
  10. 單擊 OK。系統將提示您輸入一個標簽,其格式應該為:<ibmwebspheremq<qmname lowercase>。
  11. 單擊 OK 添加該證書。


Websphere MQ Java/JMS 客戶端的 SSL 配置(圖一)




2. 創建 keyStore

連接到 Queue Manager 后,如果您希望創建客戶端身份驗證,請完成這一部分的操作。如果還未在該通道上指定客戶端身份驗證,則不需要完成這一部分所描述的操作。

keyStore 在本質上與 trustStore 相同,但它還持有客戶端的個人證書,并且 JSSE 需要使用密碼訪問。實際上,您可以把個人證書添加到剛才創建的 trustStore 中,它既可以用于 trustStore 也可以用于 keyStore,但以前不需要設置的密碼現在需要傳遞給 JSSE,以使它能夠訪問您的個人證書。

要創建 keyStore,請按照第 1 部分的步驟(使用 keyStore 替換 trustStore)一直執行到添加 CA 證書,然后繼續完成以下步驟:

  1. 選擇標簽 Key database content 下方的下拉框。
  2. 選擇 Personal Certificates

    圖 3

    Websphere MQ Java/JMS 客戶端的 SSL 配置(圖四)

  3. 單擊 New Self-Signed 為自己創建測試證書。
  4. 如果您已經擁有頒發的證書,則單擊 Receive 來添加該證書:

    圖 4

    Websphere MQ Java/JMS 客戶端的 SSL 配置(圖五)

    與創建 Queue Manager 個人證書不同,這里對于必須使用的 Key Label 沒有任何限制。

  5. 按圖 4 輸入相關的詳細信息。
  6. 單擊 OK 完成。

設置 keyStore 的最后工作是將您的證書或 CA 證書添加到 Queue Manager 密鑰儲存庫中,這樣當客戶端發送其證書時,Queue Manager 就能夠驗證該證書。下面介紹了如何從 keyStore 提取您的個人證書,這樣您就可以將其添加到 Queue Managers 密鑰儲存庫中:

  1. 選擇標簽 Key database content 下方的下拉框。
  2. 選擇 Personal Certificates。
  3. 選擇您的證書。
  4. 單擊 Extract Certificate。

    圖 5

    Websphere MQ Java/JMS 客戶端的 SSL 配置(圖六)

  5. 輸入證書名稱。
  6. 指定一個位置。
  7. 單擊 OK 完成。

一旦完成該任務后,您所需做的就是將該證書添加到 Queue Managers 密鑰儲存庫中。



Websphere MQ Java/JMS 客戶端的 SSL 配置(圖一)




CC>3. 為應用程序分配 trustStore 和 keyStore

您可以使用在應用程序內部設置的系統屬性,或在命令行中設置的 -D 標志將 trustStore 和 keyStore 的位置傳遞給 JSSE。要在應用程序內部設置它們的位置,請使用下面的代碼。trustStorekeyStore 的位置可以指向一個相同的文件:


         System.setProperty("javax.net.ssl.trustStore","<location of trustStore>");
         System.setProperty("javax.net.ssl.keyStore","<location of keyStore>");
         System.setProperty("javax.net.ssl.keyStorePassword","<password>");


要使用 -D 標志,可以使用以下命令:


java     -Djavax.net.ssl.trustStore=<location of trustStore>
         -Djavax.net.ssl.keyStore=<location of keyStore>
         -Djavax.net.ssl.keyStorePassword=<password><app>


Websphere MQ Java/JMS 客戶端的 SSL 配置(圖一)




4. 配置 CipherSuite

您希望連接的通道應該具有定義的 CipherSpec。在 Java/JMS 應用程序內部,需要指定與 CipherSpec 相匹配的 CipherSuite。下面的表格將幫您完成這一任務:

CipherSpec CipherSuite
NULL_MD5 SSL_RSA_WITH_NULL_MD5
NULL_SHA SSL_RSA_WITH_NULL_SHA
RC4_MD5_EXPORT SSL_RSA_EXPORT_WITH_RC4_40_MD5
RC4_MD5_US SSL_RSA_WITH_RC4_128_MD5
RC4_SHA_US SSL_RSA_WITH_RC4_128_SHA
RC2_MD5_EXPORT SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
DES_SHA_EXPORT SSL_RSA_WITH_DES_CBC_SHA
RC4_56_SHA_EXPORT1024 SSL_RSA_EXPORT1024_WITH_RC4_56_SHA
DES_SHA_EXPORT1024 SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA
TRIPLE_DES_SHA_US SSL_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA SSL_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA SSL_RSA_WITH_AES_256_CBC_SHA
AES_SHA_US
TLS_RSA_WITH_DES_CBC_SHA SSL_RSA_WITH_DES_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA SSL_RSA_WITH_3DES_EDE_CBC_SHA
FIPS_WITH_DES_CBC_SHA SSL_RSA_FIPS_WITH_DES_CBC_SHA
FIPS_WITH_3DES_EDE_CBC_SHA SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA

您可以在許多位置指定 CipherSuite。

如果您使用的是 MQ Java 客戶端 (MQ Java Client),您可以在 MQEnvironment.SSLCipherSuite 位置中指定密碼組類型(以字符串形式):

MQEnvironment.sslCipherSuite = "SSL_RSA_WITH_NULL_MD5";


您也可以使用 MQC.SSL_CIPHER_SUITE_PROPERTY 鍵將哈希表內的密碼組類型(以字符串形式)傳遞給 QueueManager 的構造函數或哈希表 MQEnvironment.properties

MQEnvironment.properties.put(MQC.SSL_CIPHER_SUITE_PROPERTY, "SSL_RSA_WITH_NULL_MD5");


或者:


Hashtable properties = new Hashtable();
properties.put(MQC.SSL_CIPHER_SUITE_PROPERTY, "SSL_RSA_WITH_NULL_MD5");
MQQueueManager myQM = new MQQueueManager("MyQMgr", properties);


如果您使用的是 MQ JMS 客戶端,則可以使用連接工廠的 setSSLCipherSuite() 方法設置 CipherSuite


MQConnectionFactory factory = new MQConnectionFactory();
factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
factory.setQueueManager("MyQMgr");
factory.setSSLCipherSuite("SSL_RSA_WITH_NULL_MD5");
factory.setPort(1414);
factory.setHostName("127.0.0.1");
MQConnection connection = factory.createConnection();

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97