Setting up .Net IBM.XMS client with SSL

独自空忆成欢 提交于 2019-12-13 19:44:42

问题


I have to create a client to listen to messages on a queue. SSL is being used and I am developing in dot net. I have trawled through hundreds of pages of documentation and forums to find something clear and concise and it looks like it just isn't like that!

I have a jks, and I am able to telnet to the server where the queue is being published. Below is the code I have so far...

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

I assume there must be a password somewhere but I cannot figure out how. My current error is 2538.

EDIT

So I just added IP and Port and now I'm getting error code 2393.

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

EDIT 2

Okay so now I have managed to start using the code provided by the people who are providing the queue data, however he says that in order to use the SSL keys the application must be run as spindev1 - surely that would mean creating a whole new account?


回答1:


For XMS .NET, the key store must be of CMS type, not JKS. JKS is for Java clients. CMS key store will have ".kdb" as the file extension. So specify a CMS key store file name (without the .kdb extension) for XMSC.WMQ_SSL_KEY_REPOSITORY.

On the CipherSpec you are using, I could not find SHA_WITH_RSA in MQ. Can you verify if the name is correct or you can try with a different cipher.

HTH




回答2:


Okay issues have now been resolved. Below is the extract of code which is creating and starting the connection. One of the main problems was the SSL keys were made for a user called dev1, whereas my user is mcanty. If I'd known more I'm sure this result would have come sooner.

    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)
        {
        }
    }


来源:https://stackoverflow.com/questions/11247129/setting-up-net-ibm-xms-client-with-ssl

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!