使用SSL设置.Net IBM.XMS客户端

使用SSL设置.Net IBM.XMS客户端,.net,encryption,ibm-mq,keystore,.net,Encryption,Ibm Mq,Keystore,我必须创建一个客户端来侦听队列中的消息。SSL正在被使用,我正在开发.net。我已经浏览了数百页的文档和论坛,找到了一些清晰简洁的东西,但看起来不是这样的 我有一个jks,并且我能够远程登录到发布队列的服务器。下面是我到目前为止的代码 var factoryfactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ); var connectionfactory = factoryfactory.CreateConnectionFactory(); c

我必须创建一个客户端来侦听队列中的消息。SSL正在被使用,我正在开发.net。我已经浏览了数百页的文档和论坛,找到了一些清晰简洁的东西,但看起来不是这样的

我有一个jks,并且我能够远程登录到发布队列的服务器。下面是我到目前为止的代码

var factoryfactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
var connectionfactory = factoryfactory.CreateConnectionFactory();
connectionfactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE,XMSC.WMQ_CM_CLIENT_UNMANAGED);

connectionfactory.SetStringProperty(XMSC.WMQ_SSL_KEY_REPOSITORY, @"C:\...\spindev1.key");
connectionfactory.SetStringProperty(XMSC.WMQ_SSL_CIPHER_SPEC, "SHA_WITH_RSA");
connectionfactory.SetStringProperty(XMSC.WMQ_CHANNEL, "SPINDEV1");

var connection = connectionfactory.CreateConnection();
我想某个地方一定有密码,但我想不出是怎么回事。我目前的错误是2538

编辑

所以我刚刚添加了IP和端口,现在我得到了错误代码2393

connectionfactory.SetStringProperty(XMSC.WMQ_HOST_NAME, "**.***.***.***");
connectionfactory.SetIntProperty(XMSC.WMQ_PORT, 1431);
编辑2


好的,现在我已经设法开始使用由提供队列数据的人员提供的代码,但是他说为了使用SSL密钥,应用程序必须作为spindev1运行-当然这意味着创建一个全新的帐户?

对于XMS.NET,密钥存储必须是CMS类型,而不是JKS。JKS用于Java客户机。CMS密钥存储将以.kdb作为文件扩展名。因此,为XMSC.WMQ_SSL_key_存储库指定一个CMS密钥存储文件名,但不带.kdb扩展名

在您使用的CipherSpec上,我在MQ中找不到带有RSA的SHA_。您可以验证名称是否正确,或者尝试使用其他密码吗


HTH

对于XMS.NET,密钥存储必须是CMS类型,而不是JKS。JKS用于Java客户机。CMS密钥存储将以.kdb作为文件扩展名。因此,为XMSC.WMQ_SSL_key_存储库指定一个CMS密钥存储文件名,但不带.kdb扩展名

在您使用的CipherSpec上,我在MQ中找不到带有RSA的SHA_。您可以验证名称是否正确,或者尝试使用其他密码吗


HTH

好的问题现在已经解决。下面是创建和启动连接的代码摘录。主要问题之一是SSL密钥是为名为dev1的用户创建的,而我的用户是mcanty。如果我知道的更多,我相信这个结果会来得更快

    public SISMQConnection(string connectionFactoryName, string queueName, string sslPeerName,
        string bindingsFilePath, string sslKeyRepository)
    {
        try
        {
            Hashtable aHashtable = new Hashtable { { "XMSC_IC_URL", bindingsFilePath } };
            InitialContext jndi = new InitialContext(aHashtable);

            //Java Naming and Directory Interface (JNDI)
            _queueObject = (IDestination)jndi.Lookup(queueName);
            _queueManager = (IConnectionFactory)jndi.Lookup(connectionFactoryName);

            _queueManager.SetStringProperty(XMSC.WMQ_SSL_PEER_NAME, string.Format("CN=\"{0}\"", sslPeerName));
            _queueManager.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED);
            _queueManager.SetStringProperty(XMSC.WMQ_SSL_KEY_REPOSITORY, sslKeyRepository);
            _queueManager.SetStringProperty(XMSC.WMQ_SSL_CIPHER_SPEC, "DES_SHA_EXPORT");
        }
        catch (Exception e)
        {
        }
    }

    public void Connect()
    {
        try
        {
            IConnection QueueConnection = _queueManager.CreateConnection();

            QueueSession = QueueConnection.CreateSession(true, AcknowledgeMode.AutoAcknowledge);

            IMessageConsumer QueueConsumer = QueueSession.CreateConsumer(_queueObject);

            QueueConsumer.MessageListener = OnNewMessageCallback;

            QueueConnection.Start();
        }
        catch (Exception e)
        {
        }
    }

好的,现在问题已经解决了。下面是创建和启动连接的代码摘录。主要问题之一是SSL密钥是为名为dev1的用户创建的,而我的用户是mcanty。如果我知道的更多,我相信这个结果会来得更快

    public SISMQConnection(string connectionFactoryName, string queueName, string sslPeerName,
        string bindingsFilePath, string sslKeyRepository)
    {
        try
        {
            Hashtable aHashtable = new Hashtable { { "XMSC_IC_URL", bindingsFilePath } };
            InitialContext jndi = new InitialContext(aHashtable);

            //Java Naming and Directory Interface (JNDI)
            _queueObject = (IDestination)jndi.Lookup(queueName);
            _queueManager = (IConnectionFactory)jndi.Lookup(connectionFactoryName);

            _queueManager.SetStringProperty(XMSC.WMQ_SSL_PEER_NAME, string.Format("CN=\"{0}\"", sslPeerName));
            _queueManager.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED);
            _queueManager.SetStringProperty(XMSC.WMQ_SSL_KEY_REPOSITORY, sslKeyRepository);
            _queueManager.SetStringProperty(XMSC.WMQ_SSL_CIPHER_SPEC, "DES_SHA_EXPORT");
        }
        catch (Exception e)
        {
        }
    }

    public void Connect()
    {
        try
        {
            IConnection QueueConnection = _queueManager.CreateConnection();

            QueueSession = QueueConnection.CreateSession(true, AcknowledgeMode.AutoAcknowledge);

            IMessageConsumer QueueConsumer = QueueSession.CreateConsumer(_queueObject);

            QueueConsumer.MessageListener = OnNewMessageCallback;

            QueueConnection.Start();
        }
        catch (Exception e)
        {
        }
    }

能否提供XMS.NET和MQ的版本详细信息?能否提供XMS.NET和MQ的版本详细信息?提供的代码将密码规范声明为DES_SHA_EXPORT。我只是通过查看密钥猜测工作中的信息推断出上述规范。提供的代码将密码规范声明为DES_SHA_EXPORT。我只是通过查看key-guess工作中的信息推断出上面的规范。