与IBM WEB MQ的SSL连接问题

时间:2014-11-26 05:20:47

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

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

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

enter image description here

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

enter image description here

之后我将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选项为“必需”。

enter image description here

enter image description here

当我尝试连接此代码块时

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());
                }
            }

        }

它给了我这个错误代码 enter image description here

我已经刷新了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

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

AMQERR01.LOG文件中的错误告诉您没有接收客户端证书。标签应为ibmwebspheremq<client-logged-on-user>

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

将客户端证书的标签重命名为相应的标签,看看它现在是否已将其取出。