连接到受保护的 IBM MQ 队列管理器

您可以通过在 MQ 节点或 MQEndpoint 策略中设置属性,配置与受保护的本地或远程 IBM® MQ 队列管理器的连接。

准备工作

  • 请阅读主题 配置与 IBM MQ
  • 确保已在 IBM MQ 服务器上创建所需的队列管理器。
  • 确保运行集成节点的用户标识具有访问队列管理器的必要许可权。

关于此任务

配置从 MQ 节点到 IBM MQ 队列管理器的 MQ 连接时,可以选择将该连接配置为使用安全身份进行认证和/或使用 SSL 进行机密性。 在建立与本地或远程队列管理器的连接时,可以使用安全身份(安全身份用于将用户名和密码安全凭证传递到队列管理器)。 对于到远程队列管理器的连接,可以选择是否使用 SSL 协议在客户机连接中提供机密性。 IBM App Connect Enterprise 支持 IBM MQ支持的 SSL 功能子集。

您可以使用 MQ 节点或 MQEndpoint 策略 上的 安全身份 属性,通过指定包含这些凭证的安全身份,将用户名和密码传递到队列管理器。 身份是使用 mqsisetdbparms 命令定义的。

通过在 MQ 节点或 MQEndpoint 策略上选择 使用 SSL 属性,可以指定在与远程队列管理器建立客户机连接时使用 SSL 协议。 对于使用 MQ 客户机连接属性或客户机通道定义表 (CCDT) 进行配置的客户机连接,可以使用 SSL。 如果对客户机连接指定 SSL,那么还必须指定 SSL 密钥存储库的位置。 SSL 密钥存储库是使用 IBM MQ GSKit 创建的,它保存与队列管理器的所选证书策略相应的必需专用证书和公用证书。 使用 IBM MQ GSKit 创建的 SSL 密钥存储库密码隐藏文件 key repository file name.sth必须与密钥存储库位于同一文件夹中。

您可以使用 MQEndpoint 策略中的 SSL certificate label 属性来指定在与队列管理器建立 SSL 客户机连接时要使用的证书的标签。 如果未提供任何值,那么将使用具有 MQ 缺省标签 ibmwebspheremquser_id 的证书,其中 user_id 是集成服务器的用户标识。 当同一集成服务器使用多个 MQ SSL 证书时,必须为 MQ SVRCONN 通道配置 SHARECNV 值 01,以确保将正确的证书用于通道。

通过对下列节点使用 MQ 连接属性,您可以为 MQ 节点上的本地或客户机连接定义安全属性:
  • MQInput
  • MQOutput
  • MQGet
  • MQReply
您还可以使用 MQEndpoint 策略来设置 MQ 连接的安全属性,这些值将覆盖在运行时在节点上设置的属性值。 有关更多信息,请参阅 MQEndpoint 策略

过程

执行以下步骤以完成 集成服务器的配置:

  1. 如果 IBM MQ 队列管理器需要用户名和密码,那么可以使用 mqsisetdbparms 命令为安全连接提供这些用户名和密码。 可以为所有 MQ 连接 (mq::MQ) ,指定队列管理器的所有连接 (mq::QMGR::QMName) 或具有指定安全身份的连接 (mq::securityIdentityName) 指定这些凭证。 如果您打算使用安全身份来提供与受保护队列管理器的连接的用户名和密码信息,那么可以使用 mqsisetdbparms 命令来定义该身份。 然后,此身份的名称可由 MQ 节点或 MQEndpoint 策略中的 Security identity 属性引用,作为检索安全连接的凭证的方法。 使用此命令设置安全身份时,请确保它以 mq::为前缀。
    例如:
    • 创建在建立连接时要用于检索用户名和密码凭证的安全身份。
      mqsisetdbparms -w workDir -n mq::securityIdentityName -u username -p password
      例如,如果使用此命令来创建名为 myNodeMQCreds的身份,那么可以通过在 MQ 节点或策略的 Security identity 属性中指定名称 myNodeMQCreds ,将 MQ 节点配置为使用与此身份相关联的凭证。
    • 在 MQ 节点或策略中未指定安全身份名称时,配置要用于所有到指定队列管理器的 MQ 连接(本地或客户机连接)的用户名和密码:
      mqsisetdbparms -w workDir -n mq::QMGR::QMName  -u username -p password
      例如,如果您知道与名为 mySecureQM 都需要用户名和密码,则可以指定所有与该队列管理器的连接都将使用 mqsisetdbparms 命令指定的用户名和密码:
      mqsisetdbparms -w workDir -n mq::QMGR::mySecureQM  -u myUsername -p myPassword
    • 为所有满足以下条件的 MQ 连接(本地或客户机连接)配置用户名和密码:在 MQ 节点或策略中未设置安全身份名称,并且所连接到的队列管理器与使用 mq::QMGR::QMName 指定的任何队列管理器名称都不匹配:
      mqsisetdbparms -w workDir -n mq::MQ  -u username -p password

    如果未指定任何安全身份、没有为队列管理器 (mq::QMGR) 设置凭证,并且没有为 MQ (mq::MQ) 设置缺省凭证,那么将没有用户名和密码传递到队列管理器,并因此到受保护队列管理器的连接失败。

    在 MQ 节点上或在 MQEndpoint 策略中设置安全身份时,请勿包含 mq:: 前缀。

    您可以使用 mqsireportdbparms 来了解为 MQ 连接设置了哪些安全凭证。 例如:
    mqsireportdbparms -w workDir -n mq::* 
  2. 如果要将 SSL 用于任何 MQ 连接,请使用 mqsichangeproperties 命令指定密钥存储库的位置。
    此值指定为 SSL 密钥存储库的完整文件路径(不包括文件扩展名 .kdb)。 例如,如果 SSL 密钥存储库为 C:\SSL\key.kdb,请使用以下命令设置密钥存储库的位置:
    mqsichangeproperties ACE11NODE -o BrokerRegistry -n mqKeyRepository -v C:\SSL\key
    1. 确保 SSL 密钥存储库密码存储文件 key repository file name.sth 与密钥存储库位于同一文件夹中。
      此隐藏文件是使用 IBM MQ GSKit 创建的。
    2. 使用 MQSC REFRESH SECURITY 命令使对 SSL 密钥存储库的更改生效。

执行以下步骤以在 MQ 节点或 MQEndpoint 策略中完成必需的连接配置:

  1. 配置到队列管理器的本地或客户机连接,如以下某个主题所述:
  2. 使用 安全身份 属性,通过使用 mqsisetdbparms 命令创建的安全身份,在与受保护队列管理器的特定连接上提供用户名和密码。
    在此属性中设置的值是您在步骤 1 中使用 mqsisetdbparms 命令定义的安全身份的名称。

    如果未指定安全身份属性,那么适当时将使用为所有 MQ 连接 (mq::MQ) 或为所有到指定队列管理器 (mq::QMGR::QMName) 的连接设置的安全凭证。

    您可以使用安全身份属性对本地和客户机连接提供安全凭证。 此属性不可用于使用客户机通道定义表 (CCDT) 的客户机连接;对于这些连接,请在 CCDT 中指定必需的信息。

  3. 如果要配置与远程队列管理器的客户机连接,那么可以选择与远程队列管理器建立客户机连接时是否使用 SSL 协议。
    1. 选择 MQ 节点上的 使用 SSL 属性,以通过使用 SSL 在客户机连接上提供机密性。
      此属性可用于使用 MQ 客户机连接属性或客户机通道定义表 (CCDT) 进行配置的客户机连接。
    2. 指定 SSL 对等名称 属性,此属性指定建立客户机连接时传递到远程队列管理器的名称。 必须存在正匹配,此连接才会成功。
      仅当通过 MQ 客户机连接属性指定了客户机连接详细信息时,此属性才可用;如果客户机连接使用客户机通道定义表 (CCDT),那么您可以在 CCDT 中指定此信息。
    3. 指定 SSL 密码规范 属性,此属性指定用于保护远程队列管理器的对称密钥密码算法的名称。
      仅当通过 MQ 客户机连接属性指定了客户机连接详细信息时,此属性才可用;如果客户机连接使用客户机通道定义表 (CCDT),那么您可以在 CCDT 中指定此信息。

后续操作

在部署和启动流时, MQInput 节点会尝试连接到队列管理器。 MQOutputMQGetMQReply 节点尝试在发送或接收第一条消息时进行连接。 如果发生任何连接问题,请参阅 IBM MQ 产品文档,以获取有关 IBM App Connect Enterprise BIP 消息中报告的任何 mqrc 返回码值的信息。

如果您稍后决定要使用 MQEndpoint 策略来控制连接属性,那么可以将策略附加到消息流节点。 将策略附加到消息流节点后,系统将忽略“MQ 连接”选项卡上设置的属性值。