websphere mq_Websphere MQ Java / JMS客户端的SSL配置

本文详细介绍了如何配置IBM WebSphere MQ Java/JMS客户端的SSL连接,包括创建trustStore、密钥库,分配给应用程序以及配置CipherSuite。内容涉及证书创建、JSSE调试标志、客户端身份验证等,旨在帮助用户实现安全的SSL连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文向您展示如何配置从Java™/ JMS客户端到IBM®WebSphere®MQ队列管理器的安全套接字层(SSL)连接。 它涵盖测试证书的创建,但不涵盖任何MQ配置信息。 它纯粹是Java / JMS客户指南,并且需要IBM SDK。

需要以下步骤1、3和4来配置SSL连接。 仅当您希望配置客户端身份验证时,才执行步骤2。 为了降低复杂性并简化任何潜在问题的调试,建议您最初不要使用客户端身份验证。 建立基本的SSL连接后,可以升级到客户端身份验证。

如果遇到配置问题,则可能有助于指定调试标志: -Djavax.net.debug=true

1.创建trustStore

顾名思义,trustStore拥有您信任的队列管理器的签名CA的证书。 对于Java / JMS客户端,这意味着与队列管理器建立连接时,它将作为初始SSL握手的一部分将其证书发送给我们。 处理所有SSL通信的JSSE将在trustStore中查找以验证刚刚发送的证书。 如果无法验证证书,则连接将终止。

要创建trustStore并导入证书,可以使用IBM Key Management工具,该工具是Websphere MQ V6的一部分:

  1. 在开始栏中,选择程序=> IBM Websphere MQ => IBM密钥管理
  2. IBM Key Management启动时,单击“ 新建”并设置以下值:
    密钥数据库类型
    JKS
    文档名称
    trustStore
    位置
    您选择的位置
  3. 单击确定继续。
    图1
    设定值
  4. 现在将提示您输入您选择的密码。 仅当您希望向trustStore添加证书时才需要密码。 如果JSSE仅用作trustStore,则不需要密码。 对于此示例,请输入密码。
  5. 单击确定继续。 现在,您应该拥有一个trustStore,可以在其中导入受信任CA的证书。
  6. 选中标签密钥数据库内容下的下拉框。
  7. 选择签署者证书
    图2
    选择签名者证书
  8. 点击添加 。 系统将提示您输入要添加的证书的位置。 如果您正在使用自签名证书进行测试,则此证书将是“队列管理器”证书,或者是颁发了“队列管理器”证书的CA证书。 有关为SSL配置队列管理器的信息,请参见MQ安全手册,第13章。
  9. 输入以下数据:
    数据类型
    二进制DER数据
    证书文件名
    <队列管理器证书名称>
    位置
    <证书的位置>
  10. 单击确定 。 将提示您输入标签,标签格式应为<ibmwebspheremq<qmname lowercase>
  11. 单击确定以添加证书。

2.创建密钥库

仅当与队列管理器建立连接时希望进行客户端身份验证时,才完成本节。 如果尚未在通道上指定客户端身份验证,则无需完成本节。

除了存储客户端的个人证书,并且JSSE要求访问密码外,keyStore本质上与trustStore相同。 实际上,您可以将您的个人证书添加到之前创建的trustStore中,它将同时充当trustStore和keyStore,但是现在不需要将以前不需要的密码传递给JSSE,以便它可以访问您的个人证书。

要创建KeyStore,请按照第1节中的步骤,用keyStore替换trustStore ,直到添加CA证书为止。 此时,请完成以下步骤:

  1. 选中标签密钥数据库内容下的下拉框。
  2. 选择个人证书
    图3
    选择个人证书
  3. 点击新建自签名 。 这将为您自己创建一个测试证书。
  4. 如果已经有颁发给您的证书,请单击“ 接收”以添加它:
    图4
    接收

    与创建队列管理器个人证书不同,对必须使用的密钥标签没有限制。

  5. 输入如上所示的详细信息。
  6. 单击确定完成。

设置keyStore的最后一部分是将您的证书或CA证书添加到Queue Managers密钥存储库,以便在客户端发送其证书时,Queue Manager可以对其进行验证。 以下是从keyStore中提取证书的方法,以便可以将其添加到Queue Managers密钥存储库中:

  1. 选中标签密钥数据库内容下的下拉框。
  2. 选择“ 个人证书”
  3. 选择您的证书。
  4. 点击提取证书
    图5
    单击提取证书
  5. 输入证书名称。
  6. 指定位置。
  7. 单击确定完成。

完成此任务后,只需将其添加到Queue Managers存储库中即可。

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>

4.配置CipherSuite

您希望连接的通道应定义一个CipherSpec 。 内的Java / JMS应用程序中的CipherSuite必须指定的相匹配CipherSpec 。 下表将帮助您做到这一点:

密码规范和密码套件
密码规范 密码套件
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 Client,则可以在MQEnvironment.SSLCipherSuite:指定字符串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();

结论

本文向您展示了如何:

  • 创建一个TrustStore并将Queue Managers证书导入其中。
  • 创建一个密钥库,其中保存已创建的测试证书。
  • 将它们分配给您的应用程序,并配置Websphere MQ JMS客户端以使用它们。

翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/0510_fehners/0510_fehners.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值