【问题标题】:Issue with SSL connection to IBM WEB MQ与 IBM WEB MQ 的 SSL 连接问题
【发布时间】:2015-01-24 08:27:17
【问题描述】:

我正在尝试使用 c#.net 应用程序连接 ssl“必需”通道。 我按照以下步骤创建和交换证书

在 IBM 密钥管理工具的帮助下,我在 websphere MQ 服务器 (192.168.10.2) 中创建了自签名证书 然后将其解压缩为 server.arm

然后为客户端做同样的事情

之后,我将 server.arm 复制到客户端计算机 (192.168.10.1) 并将 client.arm 复制到 WMQ 服务器 (192.168.10.2)

在服务器的 IBM 密钥管理工具中,我选择了签署者证书并添加了 client.arm,我将标签名称设置为 ibmwebspheremqclient 然后在客户端机器(192.168.10.1)中,我添加 server.arm 作为签名者证书并将标签设置为 ibmwebspheremqqm_sslconnect

这是我的频道配置。如果我将此设置设置为可选,那么这对我来说很好,但我必须将 SSL 选项启用为“必需”。

当我尝试连接此代码块时

using IBM.WMQ;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

    public class SSLConnectionTest
        {
            const String connectionType = IBM.WMQ.MQC.TRANSPORT_MQSERIES_CLIENT;
            const String qManager = "QM_SSLConnect";
            const String hostName = "192.168.10.2";
            const String channel = "ADMIN.TLS.SVRCONN";
            const String port = "1480";
            const String sslKeyRepository = @"C:\Program Files (x86)\IBM\WebSphere MQ\ssl\key";
            const String cipherSpec = "TLS_RSA_WITH_AES_128_CBC_SHA256";
            const String cipherSuite = "SSL_RSA_WITH_AES_128_CBC_SHA256";

            public Hashtable init()
            {
                Hashtable properties = new Hashtable();

                properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);
                properties.Add(MQC.HOST_NAME_PROPERTY, hostName);
                properties.Add(MQC.PORT_PROPERTY, port);
                properties.Add(MQC.CHANNEL_PROPERTY, channel);

                properties.Add(MQC.SSL_CERT_STORE_PROPERTY, sslKeyRepository);
                properties.Add(MQC.SSL_CIPHER_SUITE_PROPERTY, cipherSuite);
                properties.Add(MQC.SSL_CIPHER_SPEC_PROPERTY, cipherSpec);

                return properties;
            }

            public void TestSSLConnection()
            {
                try
                {
                    Hashtable connectionProperties = init();
                    MQQueueManager qMgr = new MQQueueManager(qManager, connectionProperties);

                }
                catch (MQException ex)
                {
                    Console.WriteLine("A WebSphere MQ error occurred: {0}", ex.ToString());
                }
                catch (System.Exception ex)
                {
                    Console.WriteLine("A System error occurred: {0}", ex.ToString());
                }
            }

        }

它给了我这个错误代码

我已经刷新了REFRESH SECURITY TYPE(SSL)

我在客户端 (192.168.10.1) C:\Program Files (x86)\IBM\WebSphere MQ\errors\AMQERR01.LOG 中发现以下错误 https://docs.google.com/document/d/1gc0AoxQpdLNg1pz_vkw-tapWDNclYXY5ql_aMIVBMfA/edit?usp=sharing

和我服务器的 192.168.10.2 错误日志 https://docs.google.com/document/d/1lxzo41TWauAyYKH1wcXOxj6HYlTYkSUoPjaTmsJHxYI/edit?usp=sharing

谁能帮帮我???

【问题讨论】:

标签: c# ssl ssl-certificate ibm-mq


【解决方案1】:

AMKERR01.LOG 文件中的错误告诉您客户端证书没有被拾取。标签应该是ibmwebspheremq<client-logged-on-user>

从您的屏幕截图中,我可以看到您的证书标签是 ibmwebspheremqclient,但从命令提示符的屏幕截图中,您的登录用户 ID 可能实际上是 herath,在这种情况下,MQ 代码将查找对于证书标签ibmwebspheremqherath,没有找到它,所以匿名。

将您的客户端证书的标签重命名为适当的标签,看看它现在是否可以使用它。

【讨论】:

  • ohh Morag 很高兴见到你回来它正在工作你是 IBM WMQ 天使感谢你把我从这个 ssl 痛苦中拯救出来。
  • 你们俩都在 IBM ryt 工作???对于像我们这样的初学者来说,很难为 Web Sphere IBM MQ 找到好的教程。当涉及到 .NET 时,获得帮助要困难得多。 IBM 文档的大部分内容也集中在 java 和 C。所以我请你们两位发布一些关于触发、传输级安全性、消息级安全性 + AMS 以及我们可以使用 IBM WMQ 做的其他有趣事情的基本教程。谢谢。
  • 好吧,Shashi 是有史以来的 .Net MQ 大师!我同意 Morag 是 IBM MQ 天使。但是,我可以谦虚地建议您访问t-rob.net/links,在那里我发表了许多关于 TLS 的文章和教程(包括 IMPACT 会议的第一个 MQ SSL 实验室的完整副本)?通常这些灵感来自我的咨询客户的情况,但我总是乐于接受主题建议。更好的是,在这里发布问题并通过博客或我个人资料中的电子邮件与我联系,以确保我看到它。
  • 另外,转到capitalware.com 并在左侧导航中查找“下载”部分。点击感兴趣的平台,它会弹出一堆链接,其中包括许多指向示例源代码的链接。
猜你喜欢
  • 2018-11-09
  • 1970-01-01
  • 2016-06-23
  • 2019-07-16
  • 1970-01-01
  • 2020-01-12
  • 2012-08-19
  • 1970-01-01
  • 2011-08-24
相关资源
最近更新 更多