当前位置: 首页 > 知识库问答 >
问题:

使用Java客户端连接到MQ通道:CertLabl错误

冯枫
2023-03-14

谁能让我知道如何传递这个参数,使用java。

根据我的理解,certlabl不是证书的一部分。

共有1个答案

赖鸿羲
2023-03-14

注下面的信息在MQV8.0.0、V9.0.0和V9.1.0知识中心中都有相同的记录。

IBM在IBM MQ8.0.0知识中心页面中记录了IBM MQ>安全性>安全性概述>IBM MQ安全机制>IBM MQ中的安全协议>SSL或TLS密钥存储库>数字证书标签,了解以下需求:

IBM MQ Version8.0支持在同一个队列管理器上使用多个证书,使用每个通道的证书标签属性。队列管理器的入站通道(例如,服务器连接或接收器)依赖于使用TLS服务器名称指示(SNI)检测通道名称,以便从队列管理器提供正确的证书。

  • 当前所有Java和JMS客户端。
  • IBM MQ 8.0之前的版本。

IBM还在IBM MQ 8.0.0 Knowledge center页面中记录了类似的信息IBM MQ>引用>配置引用>通道属性>通道属性按字母顺序>证书标签(CERTLABL):

入站通道(包括RCVR、CLUSRCVR、unqualified SERVER和SVRCONN通道)仅在远程对等体的IBM®MQ版本完全支持证书标签配置并且通道使用TLS CipherSpec的情况下发送配置的证书。如果不是这种情况,则队列管理器CERTLABL属性确定发送的证书。这种限制是因为入站信道的证书标签选择机制依赖于TLS协议扩展,而该扩展并不是在所有情况下都支持的。特别是,Java™客户机、JMS客户机和8.0版之前的所有IBM MQ版本都不支持所需的协议扩展,并且只会接收队列管理器CERTLABL属性配置的证书,而不考虑特定于通道的标签设置。

我能想到的一个可能的解决方案是,您可以找出MQ调用哪个基础函数来创建TLS会话,然后重写该函数,将SNI属性设置为MQ可以在队列管理器上识别的值,代码如下:

SSLParameters params = sslSocket.getSSLParameters();
params.setServerNames(serverNames);
sslSocket.setSSLParameters(params);

IBM在Technote“IBM WebSphere MQ:How does MQ provide multiple certificates(CERTLABL)Capability”中记录了在SNI中传递通道名称的格式:

MQ使用的SNI地址基于所请求的通道名称,后跟“.chl.MQ.ibm.com”的后缀。

  • 大写字母A-Z折叠成小写
  • 数字0到9保持不变
  • 包括小写字母a-z在内的所有其他字符都将转换为其2位十六进制ASCII字符代码,后跟一个连字符。
  • 小写字母a到z分别映射为“61-”到“7a-”
  • 百分比(%)映射到“25-”
  • 连字符(-)映射到“2D-”
  • 点(.)映射到“2E-”
  • 正斜杠(/)映射到“2f-”
  • 下划线(_)映射到“5f-”

在EBCDIC平台上,在应用此映射之前,通道名称被转换为ASCII。例如,通道名“to.qmgr1”映射到SNI地址“to2e-qmgr1.chl.mq.ibm.com”。

相反,小写通道名称“to.qmgr1”映射到SNI地址“74-6F-2E-71-6D-67-72-1.chl.mq.ibm.com”。

 类似资料:
  • 目前,由于以下问题,我在连接到服务器时遇到了问题: 当我试图连接到服务器时,它返回了一个错误: 通过WireShark进行更深入的分析,我发现客户机试图使用SSL v2连接到服务器,而服务器只能接受SSL V3,因此拒绝连接。

  • 我正在使用 MQexplorer 来处理队列管理器,当我使用 JMS 和 JNDI 查找连接到 MQ 时,使用 我收到 。所有帖子/博客都提到了这个错误,但他们说要删除队列管理员的CHAUTH等等...如何使用 MQ 资源管理器来解决这个问题?请帮帮我! 我正在使用MQ客户端(LDAP上的JNDI)连接,它可以连接远程机器(不是绑定)。

  • 我有简单的Spring启动RSocket服务 连接2个Spring服务很容易,但我的客户端应用程序没有Spring,我的客户端应该在RSocket java中 我很难理解如何将(路由,如Spring RocketRequest ester)消息发送到该特定通道。 客户端代码应为: 有可能订阅Spring频道吗?

  • 问题内容: 我正在尝试使用基本上通过以下方式构建的Java客户端使用SSL消耗IBM MQ(版本8.0.0.8): Oracle JKD 8和IBM JRE 7(出于测试目的,我每个都有一个客户端) com.ibm.mq.allclient-9.1.0.0.jar javax.jms-api-2.0.1.jarspring-jms-4.3.7.RELEASE.jar spring-jms-4.3.

  • 问题内容: 有没有一种方法可以使用客户端(而不是Node.js)JavaScript直接连接到Redis? 我已经为一些项目成功使用了Node.js + PHP + Redis + Socket.io(用于客户端)。但是,我确实认为这可以进一步简化为类似PHP + Redis + Browser javascript的东西- 取出Node.js服务器,这是我不愿意使用的另一台服务器。对于简单的事情

  • 如何通过 JMX 客户端连接到 WebSphere JVM?是否可以使用 JMX 客户机连接到 WebSphere JVM 以更改日志记录设置?