使用C#连接到启用SSL的队列管理器时,我需要设置哪些值才能使队列工作?
我目前收到此错误:
原因码:2393
MQRC_SSL_INITIALIZATION_ERROR
在我的代码中,我设置了MQEnvironment.SSLKeyRepository和MQEnvironment.SSLCipherSpec
为了使此功能有效,我还需要使用C#进行设置吗?我已经看到了一些设置密钥库密码,类型和事物的Java示例。
我也看到了设置系统环境变量的示例,但这似乎也没有任何区别。
最佳答案
调试WMQ SSL的一般模式如下...
使应用程序不使用SSL进行连接。这消除了连接问题,错误的队列或队列管理器名称等问题。
使SSL与仅服务器身份验证一起使用。这意味着在SVRCONN通道上设置SSLCAUTH(OPTIONAL)。 QMgr将提供一个应用程序必须信任的证书,但是该应用程序不需要向服务器进行身份验证。这验证了应用程序和QMgr都可以访问其密钥库,并且已将QMgr的证书或CA链正确加载到应用程序的密钥库中。
最后,在SVRCONN通道中设置SSLCAUTH(REQUIRED),以便应用程序向QMgr进行身份验证。此时,唯一可能的问题是QMgr不信任该应用程序的证书或CA。
如果QMgr拒绝了连接尝试,则客户端上的错误将有目的地是隐秘的。详细消息将在QMgr的AMQERR ??。LOG文件中找到。如果失败是在客户端,则这些消息将在客户端的错误日志中找到,或者您可以启用跟踪。
使用strmqtrc命令启用跟踪,并使用endmqtrc停止跟踪。 WMQ客户端手册中的a section描述了客户端跟踪文件的最终位置,而another section通常专门用于Windows上的跟踪。这对于确定客户端配置问题(例如找不到私钥,找不到密钥库等)非常有用。
在您的情况下,2393指示客户端配置中的某些操作失败。由于您不再遇到密钥库密码错误,我想这可能是查找私钥或不信任QMgr提供的证书时遇到的问题。在第一种情况下,设置SSLCAUTH(OPTIONAL)将起作用,因为客户端不需要私钥。但是,如果问题是由于QMgr或其他配置问题引起的,则SSLCAUTH(OPTIONAL)将无济于事,但跟踪应将其解决。
顺便说一句,需要在客户端进行跟踪和诊断是为什么IBM不支持将jar或libs复制到其上的客户端安装,而不是运行完整的客户端安装。尽管您可以通过复制一些lib文件和类来使客户端运行,但这并不能提供跟踪和诊断的所有功能。如果您尚未执行完整的客户端安装,则将无法进行此处介绍的某些操作。如果是这种情况,请从SupportPac MQC7下载并安装客户端。
关于c# - C#-带Websphere MQ版本7.0.1的SSL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4400171/