C# 与IBM WEB MQ的SSL连接问题
我正在尝试使用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选项 当我尝试连接此代码块时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
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实验室的完整副本)?通常这些都是从我的咨询客户那里得到的灵感,但我总是乐于接受主题建议。更好的办法是,在这里发布一个问题,并通过博客或我个人资料中的电子邮件与我联系,以确保我看到它。此外,请转到左侧导航中的“下载”部分。点击感兴趣的平台,它会弹出一系列链接,包括许多指向示例源代码的链接。触发教程:如果有人对此感兴趣,我在这里发布了我是如何实现的