【问题标题】:Working against a Secure-Channel with Security-Exit using XMS .NET API使用 XMS .NET API 处理具有安全退出的安全通道
【发布时间】:2014-05-19 18:28:55
【问题描述】:

为了对抗 WMQ 安全通道,我拥有以下发现:

  1. 在 WMQ 场中定义 Secure-Channel
  2. 公钥/私钥
  3. 非托管 Security-Exit 程序集

我的问题是如何利用这些资源并使用 XMS API 与 安全通道 交互? (使用 C#)

这是我迄今为止尝试过的,但没有成功:

private IConnectionFactory CreateConnectionFactory()
{
    XMSFactoryFactory factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);

    IConnectionFactory connectionFactory = factoryFactory.CreateConnectionFactory();

    connectionFactory.SetStringProperty(XMSC.WMQ_HOST_NAME, _wmqHostName);
    connectionFactory.SetIntProperty(XMSC.WMQ_PORT, _wmqPort);
    connectionFactory.SetStringProperty(XMSC.WMQ_CHANNEL, _wmqChannel);
    connectionFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED);
    connectionFactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, _wmqQueueManager);
    connectionFactory.SetIntProperty(XMSC.WMQ_BROKER_VERSION, 0);
    connectionFactory.SetStringProperty(XMSC.WMQ_SECURITY_EXIT, "MySecurityExitName");

    return (connectionFactory);
}

调用时出现如下错误:

CWSMQ0006E: 调用方法期间收到异常 ConnectionFactory.CreateConnection:CompCode:2,原因:2195。期间 执行指定的方法一个异常被另一个抛出 零件。有关详细信息,请参阅链接的异常。

更新:

我发现以下技术说明描述了我的问题及其可能(未测试)解决方案:

https://www-304.ibm.com/support/docview.wss?uid=swg1IC82112

【问题讨论】:

    标签: c# security ibm-mq xms


    【解决方案1】:

    很高兴您找到了 Technote。还要确保...

    • 如果做相互认证(SVRCONN 通道设置为SSLCAUTH(REQUIRED))那应用的个人证书has a label matching the service account。例如,如果应用以dotnetacct 运行,则其密钥库中的个人证书标签将为ibmwebspheremqdotnetacct
    • 首先让通道在没有 SSL 或退出的情况下运行。然后执行服务器身份验证的 SSL,然后是相互身份验证的 SSL,然后重新添加出口。这样可以隔离问题。
    • 使用最新的 WMQ 客户端。我指的不是 v7.0 或 v7.1 的最新修复包,而是最新的 v7.5(撰写本文时)客户端。下载为SupportPac MQC75。后来的客户端与后级 QMgrs 兼容,并且具有更多修复/功能。
    • 安装完整客户端,而不仅仅是您认为需要的类或程序集。这将为您提供各种实用程序,例如客户端跟踪。
    • 使用amqssslc 示例测试您的频道和证书。这通常位于C:\Program Files (x86)\IBM\WebSphere MQ\tools\c\Samples\Bin\amqssslc.exe,是安装完整客户端时提供的实用程序之一。
    • 转到WMQ SupportPacs page 并查找MH03 WebSphere MQ SSL Configuration CheckerMO04 WebSphere MQ SSL Wizard。这些可以帮助进行配置和问题诊断。

    【讨论】:

    • 谢谢 Rob,当使用安全出口时,我是否需要在构建连接工厂时添加更多属性以支持安全通道?
    • 如果这是服务器端出口,那么您可以从客户端添加的唯一属性是 ID 和密码。出口可访问的所有其他字段,例如证书详细信息,由连接请求自动提供。但是,出口也可以是客户端,如果有,答案取决于出口本身。
    • 安全出口有两种?
    • 可以运行仅服务器端的出口,例如 BlockIP2,或者运行一对相互通信的出口,一个在服务器,一个在客户端或远程 QMgr。 pic.dhe.ibm.com/infocenter/wmqv7/v7r5/topic/com.ibm.mq.sec.doc/…
    【解决方案2】:

    我发现您不能将非托管 Security Exit 程序集与 IBM.XMS API (IBM.XMS.dll) 一起使用,这就是我目前拥有的。

    来自 XMS 文档:

    XMSC.WMQ_SECURITY_EXIT

    此属性仅在应用程序连接到队列时相关 管理客户端模式下的管理器。此外,只有托管出口 支持

    最后,我想出了用MQ Classes for .NET(IBM 的本机 .NET API for WMQ)替换 XMS API 的使用,它确实支持使用非托管安全出口,方法是设置它的MQC.SECURITY_EXIT_PROPERTY 属性(应以 Hashtable 条目的形式提供)。更具体地说,这是程序集:amqmdnet.dll

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      相关资源
      最近更新 更多