本文不僅向您展示了如何配置從 Java™/JMS 客戶端到 IBM® WebSphere® MQ Queue Manager 的安全套接字層連接,而且還介紹了測試證書的創建(但沒有介紹任何 MQ 配置信息)。本文是一篇純粹的 Java/JMS 客戶端指南文章,文中還需要使用到 IBM SDK。
文中的第 1 步、第 3 步和第 4 步需要配置 SSL 連接。如果希望配置客戶端身份驗證,執行第 2 步即可。為了降低復雜性并簡化任何潛在問題的調試,我不推薦在一開始就使用客戶端身份驗證。在擁有了基本的 SSL 連接后,就可以配置客戶端身份驗證了。
如果在操作過程中遇到配置問題,這可能有助于指定調試標志:。
![]() |
|
顧名思義,trustStore 持有您所信任的 Queue Manager 簽名 CA 所頒發的證書。這意味著當 Java/JMS 客戶端連接到 Queue Manager 時,它需要將其證書發送給我們作為初始 SSL 握手的一部分。負責處理所有 SSL 通信的 Java Secure Socket Extension (JSSE) 將通過查找 trustStore 來驗證剛剛發送的證書。如果無法驗證該證書,則連接將被終止。
要創建 trustStore 并導入證書,您可以使用 IBM Key Management 工具,該工具是 Websphere MQ V6 的一部分:
![]() |
|
連接到 Queue Manager 后,如果您希望創建客戶端身份驗證,請完成這一部分的操作。如果還未在該通道上指定客戶端身份驗證,則不需要完成這一部分所描述的操作。
keyStore 在本質上與 trustStore 相同,但它還持有客戶端的個人證書,并且 JSSE 需要使用密碼訪問。實際上,您可以把個人證書添加到剛才創建的 trustStore 中,它既可以用于 trustStore 也可以用于 keyStore,但以前不需要設置的密碼現在需要傳遞給 JSSE,以使它能夠訪問您的個人證書。
要創建 keyStore,請按照第 1 部分的步驟(使用 替換
)一直執行到添加 CA 證書,然后繼續完成以下步驟:
設置 keyStore 的最后工作是將您的證書或 CA 證書添加到 Queue Manager 密鑰儲存庫中,這樣當客戶端發送其證書時,Queue Manager 就能夠驗證該證書。下面介紹了如何從 keyStore 提取您的個人證書,這樣您就可以將其添加到 Queue Managers 密鑰儲存庫中:
一旦完成該任務后,您所需做的就是將該證書添加到 Queue Managers 密鑰儲存庫中。
![]() |
|
您可以使用在應用程序內部設置的系統屬性,或在命令行中設置的 標志將 trustStore 和 keyStore 的位置傳遞給 JSSE。要在應用程序內部設置它們的位置,請使用下面的代碼。
和
的位置可以指向一個相同的文件:
|
要使用 標志,可以使用以下命令:
|
|
您希望連接的通道應該具有定義的 。在 Java/JMS 應用程序內部,需要指定與
相匹配的
。下面的表格將幫您完成這一任務:
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 |
您可以在許多位置指定 。
如果您使用的是 MQ Java 客戶端 (MQ Java Client),您可以在 位置中指定密碼組類型(以字符串形式):
|
您也可以使用 鍵將哈希表內的密碼組類型(以字符串形式)傳遞給 QueueManager 的構造函數或哈希表
:
|
或者:
|
如果您使用的是 MQ JMS 客戶端,則可以使用連接工廠的 方法設置
:
|