Ibm mq 使用安全密钥(公钥和私钥)连接到MQ
我能够使用不安全的通道建立到QManager的连接,并且能够做任何我想做的事情 但现在我正试图通过安全通道连接到同一个QManager;我已经获得了从MQ服务器生成的安全密钥(公钥和私钥),但我不确定如何合并密钥并建立MQ连接 我在谷歌上搜索了一下,找到了一些答案,建议采用下面的方法,但没有效果Ibm mq 使用安全密钥(公钥和私钥)连接到MQ,ibm-mq,Ibm Mq,我能够使用不安全的通道建立到QManager的连接,并且能够做任何我想做的事情 但现在我正试图通过安全通道连接到同一个QManager;我已经获得了从MQ服务器生成的安全密钥(公钥和私钥),但我不确定如何合并密钥并建立MQ连接 我在谷歌上搜索了一下,找到了一些答案,建议采用下面的方法,但没有效果 System.setProperty("javax.net.ssl.trustStore","path to public key"); System.setProperty("javax.net.ss
System.setProperty("javax.net.ssl.trustStore","path to public key");
System.setProperty("javax.net.ssl.keyStore","path to private key");
我得到了一个例外
com.ibm.mq.MQException : MQJE001: Completion Code '2', Reason '2537'.
如果您能提供一些关于如何使用安全密钥连接到QManager的指导或示例代码,我将不胜感激
@JoshMc——请在下面找到您问题的答案
}您缺少从代码中指定要使用的密码套件的选项: MQEnvironment.sslCipherSuite 本知识中心文章可能有助于: 你在JKS商店里有你的可信证书和私人证书/密钥对吗? 这些应该更像: System.setProperty(“javax.net.ssl.trustStore”,“包含验证服务器证书所需证书的JKS文件路径”) set属性(“javax.net.ssl.keyStore”,“包含客户端证书和私钥的JKS文件的路径”)
请单击问题下方的“编辑”链接并添加更多详细信息。1.您是将IBM MQ类用于Java还是将IBM MQ类用于JMS?2.您使用的jar文件来自哪个版本的IBM MQ?3.您尝试连接到的队列管理器是哪个版本的MQ?4.您是否试图让MQ验证客户端证书(检查SVRCONN通道上SSLCAUTH的值)5。粘贴尝试连接时队列管理器AMQERR01.LOG中显示的任何错误。提供在没有TLS的情况下工作的代码和在TLS下失败的代码的最少示例。@JoshMc-请找到我对您问题的答案。谢谢。请提供具体版本。@JoshMc——哪个版本?。我在属性中看到的MQ Manager是08000005,MQ Java类版本是7.0.1.4。请编辑该问题以包含完整版本。您正在使用什么jre?您使用的是哪种密码套件?在svrconn通道上设置了哪个cipherspec?
MQQueueManager QMgr = null;
try {
MQEnvironment.hostname = "hostname";
MQEnvironment.channel = "UNSECURE";
//MQEnvironment.channel = "SECURE";
MQEnvironment.port = 8080;
QMgr = new MQQueueManager("QManager");
int openOptions = MQConstants.MQOO_OUTPUT;
MQQueue queue = QMgr.accessQueue("QNAME",openOptions);
MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options = MQConstants.MQPMO_LOGICAL_ORDER | MQConstants.MQPMO_SYNCPOINT;
MQMessage message = new MQMessage();
message.writeString("TEST");
queue.put(message, pmo);
QMgr.commit();
} catch (Exception e) {
if(QMgr!=null){
try {
QMgr.backout();
} catch (MQException e1) {
e1.printStackTrace();
}
}
e.printStackTrace();
}