.NET客户端通过SSL连接到IBM MQ

我从客户端获得了关键文件,我需要使用它们来连接到MQ over SSL。 我们从客户端获得的文件是:

 xxx.crl 
 xxx.kdb 
 xxx.rdb 
 xxx.sth 
 xxx.tab 

他们说客户端频道表。 我正在尝试使用以下代码进行连接。 他们说我不需要指定它将在客户端通道表中定义的队列管理器。 但有一点是他们在使用“user1”创建密钥时已完成。

码:

Hashtable connectionProperties = new Hashtable(); // Add the connection type connectionProperties.Add(MQC.TRANSPORT_PROPERTY, connectionType); MQQueueManager qMgr; MQEnvironment.SSLCipherSpec = "TRIPLE_DES_SHA_US"; MQEnvironment.SSLKeyRepository = @"D:\Cert\BB\key"; MQEnvironment.UserId = "user1"; MQEnvironment.properties.Add(MQC.TRANSPORT_PROPERTY, connectionType); qMgr = new MQQueueManager(); 

我得到的错误:

消息=“MQRC_Q_MGR_NAME_ERROR”

我也试过telneting我能做的服务器。

有些人可以帮助我,我在这里做错了,为什么我得到这个错误。

我通过设置以下env varibles解决了这个问题。 在连接之前。

Env varibles是MQCHLLIB,MQCHLTAB,MQSSLKEYR – 使用Environment.SetEnvironmentVariable – 来设置值

   --- Certs location.   - **Make sure you give the refarance of this DLL** 

设置完所有这些之后只需调用queueManager = new MQQueueManager(); – 你应该好。

“MQRC_Q_MGR_NAME_ERROR”表示您已成功连接到QMgr,但QMgr的名称与连接请求上的名称不匹配。 例如,如果我的连接请求是针对QMGRA而我连接的IP和端口是针对QMGRB的,那么我希望得到您看到的错误。 如果我的连接请求没有指定QMgr名称,那么我连接的任何QMgr都应该接受连接。 因此,似乎环境变量,CCDT文件或您的问题中未显示的代码行指定了连接尝试的QMgr名称pior。 不幸的是,如果没有更多信息,就不可能将其中一个指向原因。

不要担心您获得的user1 ID。 如果这是问题,您将收到2035 MQRC_AUTHORIZATION_ERROR。 在连接失败之前甚至不会检查ID。

这里有一些链接可以帮助您解决所有这些问题。 这些是WMQ v7链接。 由于v6截至2011年9月是生命终止,我希望所有新的开发都将在v7上。 此外,.NEt类已集成到WMQ基础产品中,并且自v7起完全支持。

MQCONN的示例调用http://bit.ly/9HG8tC

将WebSphere MQ客户端应用程序连接到队列管理器http://bit.ly/9eapRO

使用SSL与WMQ .Net客户端http://bit.ly/9nXayP

  • 首先,您需要在appsettings中输入密钥""

  • 将连接表放在目录中。

  • 介绍环境变量: MQCHLLIB ->表的目录路径,以及MQCHLTAB->Name表文件的MQCHLTAB->Name

  • 在C#代码中使用MQQueueManager构造函数: "MQQueueManager oQueueMng = new MQQueueManager();" 。 该构造函数在CCDT中找到服务器,通道等。

  • 在C#代码中,当您需要打开队列来放置消息时,使用选项MQOO_BIND_NOT_FIXED打开队列,我打开选项MQC.MQOO_OUTPUT + MQC.MQOO_BIND_NOT_FIXED + MQC.MQOO_FAIL_IF_QUIESCINGoQueueMng.AccessQueue("name of the queue", "open options");