IBM MQ.Net CertificateLabel,CipherSpec

时间:2017-02-20 14:58:46

标签: ssl ibm-mq client-certificates

我正在尝试连接到远程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.

1 个答案:

答案 0 :(得分:2)

MQ v8.0知识中心页面&#34; Configuring SSL for managed IBM MQ .NET&#34;声明如下:

  

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

  

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

MQ v8.0知识中心页面&#34; CipherSpec support for the managed .NET client&#34;进一步详细说明:

  

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

  

Windows组策略

     

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

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

MQ v8.0知识中心页面&#34; Using certificates for the managed .NET client&#34;详细介绍了允许MQ查找证书的两个选项:

  

按证书标签匹配证书

     

如果设置了证书标签,那么IBM MQ托管的.NET客户端将使用给定的标签名称搜索Windows证书存储区以标识客户端证书。它加载所有匹配的证书并使用列表中的第一个证书。设置证书标签有两个选项:

     
      
  • 证书标签可以在访问MQEnvironment.CertificateLabel的MQEnvironment类上设置。
  •   
  • 证书标签也可以在哈希表属性中设置,作为输入参数提供MQQueueManager构造函数,如以下示例所示。
      Hashtable properties = new Hashtable();
      properties.Add("CertificateLabel", "mycert");
      名称(&#34; CertificateLabel&#34;)和值区分大小写。
  •   
           

按字符串匹配证书

     

如果未设置证书标签,则表示与字符串匹配的证书&#34; ibmwebspheremq&#34;并搜索和使用当前登录用户(小写)。

更新其他有用的博文

@renz找到了由Sudhanshu Pant发布的IBM developerWorks MQdev博客&#34; MQ v8: SSL connection in Managed MQ .NET&#34;这也有很好的屏幕截图信息。