2

キュー上のメッセージをリッスンするクライアントを作成する必要があります。SSLを使用しており、ドットネットで開発しています。私は何百ページものドキュメントとフォーラムを調べて、明確で簡潔なものを見つけましたが、それはそうではないようです!

私はjksを持っており、キューが公開されているサーバーにtelnetで接続できます。以下は私がこれまでに持っているコードです...

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として実行する必要があると彼は言います-確かにそれはまったく新しいアカウントを作成することを意味します?

4

2 に答える 2

3

XMS .NETの場合、キーストアはJKSではなくCMSタイプである必要があります。JKSはJavaクライアント用です。CMSキーストアのファイル拡張子は「.kdb」になります。したがって、のCMSキーストアファイル名(.kdb拡張子なし)を指定しますXMSC.WMQ_SSL_KEY_REPOSITORY

使用しているCipherSpecSHA_WITH_RSAで、MQで見つかりませんでした。名前が正しいかどうかを確認できますか、それとも別の暗号で試すことができますか。

HTH

于 2012-06-29T06:40:24.557 に答える
2

さて、問題は解決されました。以下は、接続を作成および開始するコードの抜粋です。主な問題の1つは、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)
        {
        }
    }
于 2012-07-02T17:20:12.560 に答える