我试图连接到远程IBM MQ服务器(v.8.0),并收到以下错误。我正在Windows 10上使用.Net 4.5.2。
我已经修改了客户端安装附带的SimplePut.exe程序。我认为我可能会丢失与我签发并按照其说明安装的客户端证书有关的内容。可能是CertificateLabel设置?我是IBM MQ的新手,因此非常感谢您的帮助。

-h <host> -p 1434 -s TLS_RSA_WITH_AES_256_CBC_SHA256 -q INS -l connection -k *SYSTEM


运行程序时在队列管理器上显示的错误如下:

Cause . . . . . :
There is a mismatch between the CipherSpecs on the local  and remote ends of
channel ''. The channel will not run until this mismatch is resolved.
The local CipherSpec is 'TLS_RSA_WITH_AES_256_CBC_SHA256' and the remote
CipherSpec is 'TLS_RSA_WITH_AES_128_CBC_SHA256'.
Recovery  . . . :
Change the channel definition for '' so that both ends have matching
CipherSpecs and restart the channel.

最佳答案

MQ v8.0知识中心页面“ Configuring SSL for managed IBM MQ .NET”指出以下内容:


  C。如果需要,请编辑Windows组策略以设置CipherSpec,然后,要使Windows组策略更新生效,请重新启动计算机。





  一种。设置MQEnvironment或SSLCipherSpec值以将该连接表示为安全连接。您指定的值用于标识正在使用的SSL协议(SSL或TLS),并且必须与Windows组策略中指定的任何首选项相匹配。


MQ v8.0知识中心页面“ CipherSpec support for the managed .NET client”有更多详细信息:


  对于IBM MQ.NET托管客户端,SSL设置适用于Microsoft.NET SSLStream类。对于SSLStream,只能在Windows组策略(这是计算机范围的设置)中设置CipherSpec或CipherSpec的首选项列表。然后,SSLStream在与服务器握手期间使用指定的CipherSpec或首选项列表。对于其他IBM MQ客户端,可以在应用程序中的IBM MQ通道定义上设置CipherSpec属性,并且将相同的设置用于SSL协商。由于此限制,无论IBM MQ通道配置中指定了什么,SSL / TLS握手都可能协商任何受支持的CipherSpec。因此,这很可能会导致队列管理器上出现错误AMQ9631。为避免此错误,请将与您在应用程序中设置的CipherSpec相同的CipherSpec设置为Windows组策略中的SSL配置。





  Windows组策略
  
  在Windows组策略上设置CipherSpec时,必须在SVRCONN通道和应用程序中为SSLCipherSpec属性值设置相同的CipherSpec。如果Windows组策略设置为默认值,即未为CipherSpec设置启用/编辑组策略,则应用程序必须在MQEnvironment类或MQQueueManager中通过Windows组策略SSL配置设置相同的CipherSpec默认值。构造函数哈希表属性。




使用Managed .NET指定证书标签的更新

MQ v8.0知识中心页面“ Using certificates for the managed .NET client”详细介绍了两个选项,以允许MQ查找证书:


  通过证书标签匹配证书
  
  如果设置证书标签,那么IBM MQ Managed .NET客户端将使用给定的标签名称搜索Windows证书存储,以标识客户端证书。它加载所有匹配的证书,并使用列表中的第一个证书。设置证书标签有两个选项:
  
  
  可以在访问MQEnvironment.CertificateLabel的MQEnvironment类上设置证书标签。
  还可以在哈希表属性中设置证书标签,该属性作为输入参数由MQQueueManager构造函数提供,如以下示例所示。
  Hashtable properties = new Hashtable();
  properties.Add("CertificateLabel", "mycert");
  名称(“ CertificateLabel”)和值区分大小写。
  
  
  
  
  字符串匹配证书
  
  如果未设置证书标签,那么将搜索并使用与字符串“ ibmwebspheremq”和当前登录用户(小写)匹配的证书。




更新其他有用的博客文章

@renz找到了Sudhanshu Pant“ MQ v8: SSL connection in Managed MQ .NET”发布的IBM developerWorks MQdev博客,该博客也提供了很好的屏幕截图信息。

07-24 09:32