C# – 使用Websphere MQ V7.0.1的SSL

使用C#连接到启用SSL的队列管理器时,我需要设置哪些值才能使队列正常工作?

我目前收到此错误:原因代码:2393 MQRC_SSL_INITIALIZATION_ERROR

在我的代码中,我正在设置MQEnvironment.SSLKeyRepository和MQEnvironment.SSLCipherSpec

我还需要用C#设置其他东西吗? 我已经看到一些Java示例设置密钥库密码和类型和东西。

我也看过设置系统环境变量的例子,但这似乎也没有任何区别。

调试WMQ SSL的一般模式如下……

  1. 使用无SSL连接应用程序。 这消除了连接,错误队列或队列管理器名称等问题。
  2. 获取SSL使用仅服务器身份validation。 这意味着在SVRCONN通道上设置SSLCAUTH(OPTIONAL)。 QMgr将提供应用程序必须信任的证书,但应用程序不需要向服务器进行身份validation。 这validation了应用程序和QMgr都可以访问其密钥库,并且QMgr的证书或CA链在应用程序的密钥库中正确加载。
  3. 最后,在SVRCONN通道中设置SSLCAUTH(REQUIRED),以便应用程序validation回QMgr。 此时唯一可能的问题是QMgr不信任应用程序的证书或CA.

如果QMgr拒绝连接尝试,则客户端的错误将故意隐藏。 详细消息将在QMgr的AMQERR ??。LOG文件中找到。 如果故障发生在客户端,则可以在客户端的错误日志中找到这些消息,也可以启用跟踪。

使用strmqtrc命令启用跟踪并使用endmqtrc将其停止。 WMQ客户端手册有一节描述了客户端跟踪文件的最终位置, 另一 节描述了一般用于在Windows上进行跟踪的另一节 。 这在确定客户端配置问题时非常有用,例如无法找到私钥,无法找到密钥库等。

在您的情况下,2393表示客户端配置中的某些内容失败。 由于您不再使用密钥库密码获取错误,我猜测它可能在查找私钥或不信任QMgr提供的证书时遇到问题。 在第一种情况下,设置SSLCAUTH(可选)将起作用,因为客户端’将不需要它的私钥。 但是,如果问题是信任QMgr或其他配置问题,SSLCAUTH(可选)将无济于事,但跟踪应该排除这一点。

顺便提一下,需要在客户端进行跟踪和诊断,这就是为什么IBM不支持复制jar或lib而不是运行完整客户端安装的客户端安装。 虽然您可以通过复制一些lib文件和类来使客户端运行,但这并不能提供跟踪和诊断的所有function。 如果您尚未执行完整的客户端安装,那么我在此处描述的一些内容将无法实现。 如果是这种情况,请从SupportPac MQC7下载并安装客户端。