我正在尝试按主题连接到pub / sub的频道。我正在非托管模式下运行,因为这是唯一支持SSL的模式。我在与应用程序相同的目录中指定了密钥为CIPHER SPEC
的{{1}}和KEY_REPO
(我还尝试了密钥存储区的完整路径,但是<无效)。在那里有一个关联的key.kdb
,其中包含使用证书的密码(加密)。下面是代码片段,更少的连接字符串和其他敏感信息。
key.sth
我在Visual Studio中遇到以下异常,它只是告诉我MQ客户端抛出了错误。
XMSFactoryFactory factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
IConnectionFactory connectionFactory = factoryFactory.CreateConnectionFactory();
connectionFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED);
connectionFactory.SetStringProperty(XMSC.WMQ_HOST_NAME, "hostName");
connectionFactory.SetIntProperty(XMSC.WMQ_PORT, 1234);
connectionFactory.SetStringProperty(XMSC.WMQ_CHANNEL, "Channel");
connectionFactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "QueueManager");
connectionFactory.SetStringProperty(XMSC.WMQ_SSL_CIPHER_SPEC, "NULL_SHA");
connectionFactory.SetStringProperty(XMSC.WMQ_SSL_KEY_REPOSITORY, @"key");
connection = connectionFactory.CreateConnection();
我可以通过下面的事件日志看到MQ客户端抛出的特定错误。
CWSMQ0006E: An exception was received during the call to the method
ConnectionFactory.CreateConnection: CompCode: 2, Reason: 2393. During
execution of the specified method an exception was thrown by another
component. See the linked exception for more information.
我似乎无法弄清楚这个设置有什么问题..有什么想法吗?
答案 0 :(得分:1)
该错误似乎表明QMgr的证书已由客户验证。这意味着它找到了KDB和STH文件。现在它正在尝试验证客户端证书。这可能意味着......
a)找不到客户证书,可能是因为标签为 b)QMgr没有客户端的公钥(自签名)或CA根
我通常按照this other SO answer.中列出的程序验证TLS频道测试如果您使用SSLCAUTH(OPTIONAL)
成功测试,那么它往往会证实我的猜测。如果这不起作用,那么您需要提供有关您是否使用自签名证书,QMgr的KDB中的内容,是否在更新其密钥库后在QMgr上运行REFRESH SECURITY TYPE(SSL)
以及证书标签名称的详细信息在客户端的密钥库中。