我正在尝试使用 SSL 从 AIX 机器连接到远程 QM。
我已设置我的 QM 和 channel 以允许 SSL 连接。
我在服务器(包含上述 QM + channel 的机器)上创建了一个 keystore ,并导出了它的自签名证书并从客户端导入了证书。
我在 AIX 机器上使用 GSK 创建了一个 keystore ,其中存在服务器的自签名和签名者。
尝试连接到 QM 时,客户端代码如下所示。此代码在 Windows 上运行,但在 AIX 上不起作用,这让我相信这是我做错的证书问题,而不是代码问题。
CipherSpec 是 - TLS_RSA_WITH_AES_256_CBC_SHA256 并且 keystore 位置正确。
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、重新启动 channel 、刷新 SSL,但都没有成功。我错过了什么?
感谢任何帮助。
最佳答案
您拥有的客户端证书的当前标签是ibmwebspherebldaix02
.
对于 MQI 客户端应用程序,MQ 将查找的默认证书标签是字符串 ibmwebspheremq
后跟应用程序运行的用户名,全部小写。
在这种情况下,它不满足默认要求的第一部分,因为它以 ibmwebsphere
开始。并且缺少 mq
然后是 bldaix02
.
您有几个选择:
- 如果用户是
bldaix02
然后您可以将 keystore 中的证书重命名为ibmwebspheremqbldaix02
.如果那不是用户名,则将证书重命名为ibmwebspheremq<username>
全部小写。此选项应适用于所有版本的 IBM MQ 产品。 - 如果您使用的是 IBM MQ v7.0 - 7.5(这些都不受支持),您可以通过设置环境变量来告诉 MQ 使用默认证书
AMQ_SSL_ALLOW_DEFAULT_CERT
在启动应用程序之前更改为任何值,或者如果在程序中执行此操作,请在调用 connect 之前执行此操作。请注意,此功能已在 IBM MQ v8.0 和 v9.0 的初始版本中删除,但后来在 8.0.0.7 和 9.0.0.1 及更高版本中重新添加。 如果您使用的是 IBM MQ v8.0 或更高版本(您应该是,因为这些是目前唯一受支持的版本),您可以告诉 MQ 寻找不同的标签。您可以通过四种方式做到这一点:
- 如果使用 CCDT,请设置
CERTLABL
CLNTCONN
的属性 channel 。 - 以编程方式设置
CertificateLabel
MQSCO
中的属性 - 设置环境变量
MQCERTLABL
在启动应用程序之前,或者如果在程序中执行此操作,请在调用连接之前执行。 - 使用
CertificateLabel
SSL:
的属性mqclient.ini 中的节。
注意MQ 可以通过多种方式找到 mqclient.ini,这些在 IBM MQ 知识中心和 StackOverflow 上的各种答案中均有详细说明。
- 如果使用 CCDT,请设置
您可以在以下链接中找到更多信息:
- > Technote: Specifying the userid in the SSL certificate label for an MQ client
- > 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
关于ssl - 使用 SSL 从 AIX 机器连接到远程队列管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51157464/