【发布时间】:2015-01-09 23:41:41
【问题描述】:
我正在尝试通过 .NET 客户端连接到 MQ 服务器队列。我需要使用证书进行安全通信。这是我的代码:
MQEnvironment.SSLKeyRepository = "*SYSTEM";
MQEnvironment.ConnectionName = connectionName;
MQEnvironment.Channel = channelName;
MQEnvironment.properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
MQEnvironment.SSLCipherSpec = "TLS_RSA_WITH_AES_256_CBC_SHA";
queueManager = new MQQueueManager(queueManagerName, channelName, connectionName);
queue = queueManager.AccessQueue(SendQueueName,MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
queueMessage = new MQMessage();
queueMessage.WriteString(message);
queueMessage.Format = MQC.MQFMT_STRING;
queue.Put(queueMessage, new MQPutMessageOptions());
每次我尝试将消息放入队列时,都会收到此错误消息
Reason Code: 2059
MQexp.Message: MQRC_Q_MGR_NOT_AVAILABLE
我检查了队列管理器名称、队列名称等变量,它们是正确的。 我也能够在没有 SSL 的情况下连接到不同的队列,我相信我的代码没有提供足够的信息来建立成功的连接。
对此的任何帮助将不胜感激。
谢谢, 库纳尔
【问题讨论】:
-
您能告诉我们队列管理器错误日志的内容吗?如果您已完成典型安装,您可以在 \ProgramData\IBM\MQ\
\errors 目录下找到错误日志。你也在使用 MQ v8 吗? -
这是服务器端错误 - AMQ9639:远程通道“
”未指定 CipherSpec。 -
您已在客户端应用程序中指定了 CipherSpec。但是您是否已将队列管理器和通道配置为使用 SSL?