Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与IBM WEB MQ的SSL连接问题_C#_Ssl_Ssl Certificate_Ibm Mq - Fatal编程技术网

C# 与IBM WEB MQ的SSL连接问题

C# 与IBM WEB MQ的SSL连接问题,c#,ssl,ssl-certificate,ibm-mq,C#,Ssl,Ssl Certificate,Ibm Mq,我正在尝试使用c#.net应用程序连接ssl“必需”通道。 我按照以下步骤创建和交换证书 在IBM密钥管理工具的帮助下,我在websphere MQ server(192.168.10.2)中创建了自签名证书 然后将其解压缩为server.arm 然后对客户端做了同样的事情 之后,我将server.arm复制到客户机(192.168.10.1),将client.arm复制到WMQ服务器(192.168.10.2) 在服务器的IBM密钥管理工具中,我选择了签名者证书并添加了client.arm

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

在IBM密钥管理工具的帮助下,我在websphere MQ server(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\u 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());
                }
            }

        }
它给了我这个错误代码

我已刷新刷新安全类型(SSL)

我在客户端(192.168.10.1)C:\ProgramFiles(x86)\IBM\WebSphere MQ\errors\AMQERR01.LOG中发现以下错误

还有我的服务器的192.168.10.2错误日志


有人能帮我吗?

AMQERR01.LOG文件中的错误告诉您客户端证书未被提取。标签应为
ibmwebspheremq

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


将客户端证书的标签重命名为适当的标签,然后查看它是否已恢复。

ohh Morag很高兴看到您恢复工作,您是IBM WMQ天使,感谢您将我从ssl困境中解救出来。您俩都在IBM ryt工作吗???对于像我们这样的初学者来说,很难找到web sphere IBM MQ的好教程。对于.NET来说,获得帮助要困难得多。IBM文档的大部分内容也集中在java和C上。因此,我恳请你们两位发表一些关于触发、传输级安全性、消息级安全性+AMS以及我们可以使用IBM WMQ进行的其他有趣事情的基本教程。谢谢。好吧,沙石一直是.Net MQ大师!我同意Morag是IBM MQ天使。但是,请允许我谦虚地建议您到我发表过许多关于TLS的文章和教程的地方来看看(包括IMPACT会议上第一个MQ SSL实验室的完整副本)?通常这些都是从我的咨询客户那里得到的灵感,但我总是乐于接受主题建议。更好的办法是,在这里发布一个问题,并通过博客或我个人资料中的电子邮件与我联系,以确保我看到它。此外,请转到左侧导航中的“下载”部分。点击感兴趣的平台,它会弹出一系列链接,包括许多指向示例源代码的链接。触发教程:如果有人对此感兴趣,我在这里发布了我是如何实现的