使用 SSL 从 AIX 机器连接到远程队列管理器

Connecting to a Remote Queue Manager from an AIX Machine using SSL

我正在尝试使用 SSL 从 AIX 机器连接到远程 QM。

我已将我的 QM 和频道设置为允许 SSL 连接。

我在服务器(包含上述 QM + 通道的机器)上创建了一个密钥库,并导出了它的自签名证书并从客户端导入了证书。

我在 AIX 机器上使用 GSK 创建了一个密钥库,其中存在服务器的自签名和签名者。

尝试连接到 QM 时,客户端代码如下所示。此代码在 Windows 上有效,但在 AIX 上无效,这让我相信这是我做错的证书问题,而不是代码问题。

CipherSpec 是 - TLS_RSA_WITH_AES_256_CBC_SHA256 密钥库位置正确。

m_QChannel.setChannelName(m_strChannelName);
    m_QChannel.setConnectionName(m_pParent->GetName());
    m_QChannel.setTransportType( MQXPT_TCP );

    if (!m_strCipherSpec.IsEmpty())
    {
        m_QChannel.setSslCipherSpecification(m_strCipherSpec);

        if (!m_strKeyStore.IsEmpty())
        {
            m_QMgr.setKeyRepository(m_strKeyStore);
        }
        else
        {
            CString strKeyStore = getenv("MQSSLKEYR");
            m_QMgr.setKeyRepository(strKeyStore);
        }
    }

    //Set the queue manager options
    m_QMgr.setName(m_strName);
    m_QMgr.setChannelReference(&m_QChannel);

    if (!m_QMgr.connect()) 
    {
        m_iLastError =m_QMgr.reasonCode( ) ;

        return false;         
    }

然而,当我尝试 运行 我的应用程序连接时,我返回了 MQRC 2393 错误,在检查错误日志时它抱怨证书。

我试过重启 QM、重启频道、刷新 SSL,但都没有成功。我错过了什么?

感谢任何帮助。

您拥有的客户端证书的当前标签是ibmwebspherebldaix02

对于 MQI 客户端应用程序,MQ 将查找的默认证书标签是字符串 ibmwebspheremq,后跟应用程序的用户名 运行,全部为小写。

在这种情况下,它不符合默认要求的第一部分,因为它以 ibmwebsphere 开头,缺少 mq,然后是 bldaix02

您有几个选择:

  1. 如果用户是 bldaix02,那么您可以将密钥库中的证书重命名为 ibmwebspheremqbldaix02。如果那不是用户名,则将证书重命名为 ibmwebspheremq<username> 全部小写。此选项应适用于所有版本的 IBM MQ 产品。
  2. 如果您使用的是 IBM MQ v7.0 - 7.5(这些都不受支持),您可以通过设置环境变量 [= =18=] 在启动应用程序之前更改为任何值,或者如果在程序中执行此操作,请在调用 connect 之前执行此操作。请注意,此功能已在 IBM MQ v8.0 和 v9.0 的初始版本中删除,但后来在 8.0.0.7 和 9.0.0.1 及更高版本中重新添加。
  3. 如果您使用的是 IBM MQ v8.0 或更高版本(您应该使用,因为这些是当前唯一受支持的版本),您可以告诉 MQ 查看对于不同的标签。您可以通过四种方式做到这一点:

    1. 如果使用 CCDT,请设置 CLNTCONN 通道的 CERTLABL 属性。
    2. 以编程方式在 MQSCO
    3. 中设置 CertificateLabel 属性
    4. 在启动应用程序之前设置环境变量MQCERTLABL,或者如果在程序中设置环境变量,请在调用连接之前设置。
    5. 使用mqclient.ini中SSL:节的CertificateLabel属性。
      注意:有多种方法MQ 将找到 mqclient.ini,这些在 IBM MQ 知识中心和 Whosebug 上的各种答案中都有详细说明。

您可以在以下链接中找到更多信息:

  1. Technote: Specifying the userid in the SSL certificate label for an MQ client
  2. IBM MQ 8.0.0 Knowledge Center > IBM MQ > Security > Security overview > IBM MQ security mechanisms > Security protocols in IBM MQ> The SSL or TLS key repository > Digital certificate labels, understanding the requirements