社区首页 >问答首页 >尝试通过java客户端访问MQ7.5服务器,但遇到错误,已创建SYSTEM.SSL.SVRCONN

尝试通过java客户端访问MQ7.5服务器,但遇到错误,已创建SYSTEM.SSL.SVRCONN
EN

Stack Overflow用户
提问于 2015-06-30 08:07:56
回答 2查看 885关注 0票数 1

没有SSL,我可以连接,但使用SSL时,它在MQ日志中抛出以下错误

代码语言:javascript
代码运行次数:0
复制
AMQ9660: SSL key repository: password stash file absent or unusable.

EXPLANATION:
The SSL key repository cannot be used because MQ cannot obtain a password to
access it. Reasons giving rise to this error include: 
(a) the key database file and password stash file are not present in the
  location configured for the key repository, 
(b) the key database file exists in the correct place but that no password
  stash file has been created for it, 
(c) the files are present in the correct place but the userid under which MQ is
  running does not have permission to read them, 
(d) one or both of the files are corrupt. 

The channel is '????'; in some cases its name cannot be determined and so is
shown as '????'. The channel did not start.
ACTION:
Ensure that the key repository variable is set to where the key database file
is. Ensure that a password stash file has been associated with the key database
file in the same directory, and that the userid under which MQ is running has
read access to both files. If both are already present and readable in the
correct place, delete and recreate them. Restart the channel. 
----- amqccisa.c : 5577 -------------------------------------------------------
6/30/2015 12:15:33 - Process(14120.5) User(locahost) Program(amqrmppa.exe)
                      Host(localhost) Installation(Installation1)
                      VRMF(7.5.0.2) QMgr(QM1)

AMQ9492: The TCP/IP responder program encountered an error.

下面是产生错误的代码:

代码语言:javascript
代码运行次数:0
复制
import javax.jms.JMSException;
import javax.jms.Session;

import com.ibm.mq.*;
import com.ibm.jms.JMSMessage;
import com.ibm.jms.JMSTextMessage;
import com.ibm.mq.jms.JMSC;
import com.ibm.mq.jms.MQQueue;
import com.ibm.mq.jms.MQQueueConnection;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import com.ibm.mq.jms.MQQueueReceiver;
import com.ibm.mq.jms.MQQueueSender;
import com.ibm.mq.jms.MQQueueSession;

import java.io.*;

import javax.net.ssl.*;

import java.net.ServerSocket;
import java.net.Socket;
import java.security.KeyStore;
/**
 * simple testcase for Point-to-point messaging .
 */
public class MQTEST {
  /**
   * Main method
   *
   * @param args
   */
  public static void main(String[] args) {
    try {
        SSLContext context = SSLContext.getDefault();
        System.setProperty("javax.net.ssl.trustStore","D:\\IBM\\CERT\\truststore.jks");
         System.setProperty("javax.net.ssl.keyStore","D:\\IBM\\Websphere\\Qmgrs\\QM1\\ssl\\key.kdb");
       System.setProperty("javax.net.ssl.keyStorePassword","password");





      MQQueueConnectionFactory cf = new MQQueueConnectionFactory();

      // Config
      cf.setHostName("localhost");
      cf.setPort(1414);
      cf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
      cf.setQueueManager("QM1");
     cf.setChannel("SYSTEM.SSL.SVRCONN");
    // cf.setChannel("SYSTEM.DEF.SVRCONN");

     cf.setSSLCipherSuite("TLS_RSA_WITH_AES_128_CBC_SHA");



      MQQueueConnection connection = (MQQueueConnection) cf.createQueueConnection();


      MQQueueSession session = (MQQueueSession) connection.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);
      MQQueue queue = (MQQueue) session.createQueue("queue:///LQ1");
      MQQueueSender sender =  (MQQueueSender) session.createSender(queue);
EN

回答 2

Stack Overflow用户

发布于 2015-06-30 16:06:02

该问题的错误日志格式和措辞表明,队列管理器无法访问其KDB密钥库。

(注意:在提供错误日志时,请让我们知道您是从QMgr还是从客户端获得的!"MQ log“可以是任何一种方式。)

考虑到这一点,您应该运行配置队列管理器证书的设置过程。这包括:

  1. 生成一个空的KDB文件,指定自签名证书或证书签名请求(CSR)

的“隐藏密码”。

如果这是用于CA签名的证书...

  1. 获取已签名的CSR
  2. 将证书颁发机构的签名者证书导入到QMgr的KDB中,并将已签名的CSR客户端导入到密钥库

中。

如果这是用于自签名证书...

  1. 提取自签名证书的公共部分
  2. 将自签名证书导入到客户端的密钥库

如果您省略了这些步骤中的任何一步,请从您停止的地方继续。

如果忘记隐藏密码或存储文件已损坏,请使用iKeyman图形用户界面或runmqakm命令的相应选项重新创建它。

注意,如果KDB完全不存在,QMgr仍然会抛出上面的错误。这是因为它做的第一件事就是尝试打开stash文件。如果它找不到它,则抛出password stash file absent or unusable错误。即使在没有创建KDB的情况下也是如此。

票数 1
EN

Stack Overflow用户

发布于 2015-06-30 14:38:22

队列管理器使用的密钥存储库的隐藏文件可能已损坏。在这种情况下,我所做的是:

1)删除存放文件。

2)在IBM key Management Utility中打开密钥存储库。

3)使用Key Database File/Stash Password菜单重新创建一个新的存储文件。

然后再次尝试连接。

您的客户端应用程序代码正在使用javax.net.ssl.keyStore.kdb类型密钥库。据我所知,MQ客户端将只使用.jks类型的密钥存储。Java型密钥存储由队列管理器和C/C#等非.kdb客户端使用。

HTH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31132858

复制
相关文章
云服务器安装Sftp并通过java访问
对接欧洲一些外呼外包公司,特别是一些小国家的业务od公司,没有研发能力或者研发能力比较弱,在跨境电商场景,需要把审单、催签收等一些业务外包给他们,一般情况下是甲方把数据通过接口推送过去,然后乙方拿到业务数据进行外呼(包含ivr),把结果再通过接口回调传给甲方,但是乙方外呼系统是采购别人的,自己没有研发能力,所以数据交互需要通过离线的方式进行,按照对方的要求,需要我们搭建sftp作为数据中转站,我们定时把需要外呼跟进的数据通过文件的方式上传到sftp上,他们下载之后去外呼,然后把外呼跟进结果也以文件的方式上传到sftp服务器,我们定时去下载文件解析数据来做业务跟进。
叔牙
2021/12/21
6.1K0
云服务器安装Sftp并通过java访问
Tomcat创建HTTPS访问,java访问https
一 https和ssL HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP
Ryan-Miao
2018/03/13
2.4K0
Tomcat创建HTTPS访问,java访问https
java406错误_Java项目部署遇到406错误[通俗易懂]
发生406错误的原因是服务器传递回来的值客户端无法解析。通过在谷歌浏览器的开发浏览器查看代码,发现RequestHeader的Accept格式为application/json格式,而服务器传回的报文中ResponseHeader的格式却为text/html,导致js解析不了数据,报406错误。因此,我们需要将服务器的数据先转换成json,再将其以application/json的Content-type传回给客户端,需要导入jackson的jar包。
全栈程序员站长
2022/07/23
1.6K0
云服务器uwsgi内网访问但外网不能访问的解决
按照网上的教程配置uwsgi,内网可以正常访问,但是外网不通。教程很多,但都没有提到外网不通的坑。这里随便贴一个https://cloud.tencent.com/developer/article/1563400
用户9227809
2021/11/26
14.5K0
[android] 创建模拟器遇到的常见错误
1.错误提示: invalid command line sdk安装目录有中文 添加ANDROID_SDK_HOME环境变量,指向sdk安装目录 2.模拟器无法安装应用 模拟器开启其实是开启了的程序占用这个文件夹下的几个镜像文件
唯一Chat
2019/09/10
7320
[android] 创建模拟器遇到的常见错误
通过域名访问Linux云服务器上的java web项目
当有几个项目需要放在云服务器上,直接在nginx配置文件中创建几个虚拟主机,然后需要解析几个二级域名。这种方法比较容易实现些,把所有的java web项目放到一个Tomcat下实现访问。
兮动人
2021/06/11
10.8K0
【已解决】在创建索引库的时候错误提示:
通过上面几篇文章的学习,我们已经在docker里面安装了ES等相关的。接着需要向ES添加索引库
凯哥Java
2022/12/16
9890
【已解决】在创建索引库的时候错误提示:
ASP.NET AJAX(4)__客户端访问WebService服务器端释放WebService方法客户端访问WebService客户端访问PageMethod错误处理复杂数据类型使用基础客户端代理的
服务器端释放WebService方法 编写一个普通的WebService 为WebService类添加自定义的属性标记__ScriptServiceAttribute 释放WebService方法                   __访问级别为Public                   __使用WebServiceAttribute进行标记 为页面中的ScriptManager引入asmx文件 客户端访问WebService [Namespaces.]ClassName.MethodName 依次
小白哥哥
2018/03/07
4.9K0
手动创建数据库及创建过程遇到的错误(踩到的坑)
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
SQLplusDB
2020/03/26
6.2K0
尝试使用Memcached遇到的狗血问题
乘着有时间,尝试下利用Memcached进行分布式缓存,其中遇到了不少问题及狗血的事情,开篇记录下,希望对您有帮助。 我之前的项目为:Asp.Net MVC4 + Nhibernate + MSSQL,利用简单分层,在用缓存时写了个缓存接口(还好当时写了),所以在此基础上,我的改动其实很简单,实现这个接口,再切换到Memcached就可以了。 搭建Memcached服务器 搭建服务器很简单,我用虚拟机虚拟了Ubuntu Server,为何使用Server版本呢?搭建起来比较快,而且启动也快,使用该用的功能就
脑洞的蜂蜜
2018/02/01
9970
尝试使用Memcached遇到的狗血问题
ftp服务器搭建并通过外网访问
内网FTP如何端口映射到外网连接访问?通过公网路由器映射或nat123端口映射均可实现。前者是硬件公网端口映射,后者是软件内网端口映射,目的一样,方法不一。
zls365
2020/08/19
14.9K0
ftp服务器搭建并通过外网访问
[NodeJS]创建HTTP、HTTPS服务器与客户端
当从客户端请求流中读取到数据时会触发data事件,当读取完客户端请求流中的数据时触发end事件。
奋飛
2019/08/15
5.4K0
【Java】idea已创建的项目导入依赖
德宏大魔王
2023/08/08
2840
【Java】idea已创建的项目导入依赖
【Java 网络编程】客户端 Socket 创建
创建 Socket 对象 , 传入 Proxy.NO_PROXY 参数 , 代表该参数没有代理模式 ; 该构造函数与下面的无参构造方法是等价的 ;
韩曙亮
2023/03/27
1.6K0
点击加载更多

相似问题

尝试启动Grakn,但遇到Java错误

112

尝试创建SQL过程,但遇到错误

11

尝试访问stackoverflow api,但遇到解析错误

40

尝试通过pip安装mysqlclient,但遇到错误

10

尝试通过pip安装模块,但遇到错误

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文