当前位置: 首页 > 知识库问答 >
问题:

Websphere MQ服务器和客户端之间的SSL/TLS握手

冯文彬
2023-03-14

我正在使用T.Rob的建议调试Websphere MQ服务器和客户机之间的SSL错误,并需要帮助理解SSL握手(SSL连接到MQ使用。NET MQ客户机SSLv3?)。

我的WMQ7.5客户机应用程序是C代码,使用密钥库(.kdb)。利用WebSphere管理员提供的CHLTAB。WMQ服务器运行Java,通道是用相互身份验证定义的。

本文指出,在SSL/TLS握手中,服务器总是发送其公共证书以响应连接请求。然后,客户端必须通过首先检查签名和有效日期,然后在其信任存储区中查找签名证书的对象来验证证书。

这里是我的困惑:由于客户端的密钥存储只有应用程序个人证书,客户端如何验证服务器发送的公共证书?我已经向WebSphere server管理员提供了应用程序证书的公共名称,但仅此而已。

提前感谢您的澄清!

共有1个答案

艾宁
2023-03-14

关于“客户端的我的密钥存储只有应用程序的个人证书”的部分是令人不安的。那不行。客户端KDB必须具有服务器的公钥。如果MQ服务器具有SSLCAUTH(OPTIONAL),则服务器的公共证书是KDB中连接成功所需的全部内容。

TLS握手的第一部分是客户端验证服务器证书的地方。公钥/私钥对的使用是如何确保另一方事物的真实性的。为了做到这一点,服务器必须有自己的个人证书,客户端必须有签名者链根的公钥。对于自签名证书,客户端必须信任个人证书的公共部分。对于CA签名的证书,客户端必须信任CA根。不管是哪一个,客户端都必须信任用于签署服务器个人证书的东西,否则该证书无法验证。

TLS握手是对称的,所以第二部分的工作方式与第一部分完全相同,但角色是颠倒的。因此,在启用相互身份验证的情况下,客户端必须有自己的个人证书(因为其中包含私钥),服务器必须信任客户端匹配公钥的签名。如果客户端证书是自签名的,QMgr必须信任它。如果客户端的证书是CA签名的,QMgr必须信任签名者。无论哪种方式,QMgr都必须有一个证书来验证其KDB中的客户机。

顺便说一句,这篇文章中也有一些混乱,因为它说“我的WMQ7.5客户机应用程序是C代码,而WMQ服务器运行的是Java。”队列管理器中没有在服务器端使用Java的内容。安装了Java组件来完成管理JNDI对象和运行示例代码等任务。在现代MQ版本中,Java运行Web控制台。但是QMgr本身中没有Java组件,传入通道连接请求的路径中也没有Java组件。这一切都由QMGR的侦听器、代理和其他内部进程所控制。因此,我根本不确定这里指的是什么,除了Java在MQ服务器端运行并参与TLS握手的概念可能是文章中提到的一些混乱的来源。;-)

 类似资料:
  • 似乎服务器拒绝了wireshark输出中的tls协商,但我从代码中看不出原因。它是基于工作的代码,只是它被否决了,因此我用新的API更新。代码是开始。需要使用真实的证书。有人知道为什么服务器发送tcp FIN,ack吗? 我有以下服务器代码: 23 16.856111 sonymobi_7f:55:af intelcor_25:1d:fc ARP 42 10.1.10.100在84:c7:ea:7

  • 问题内容: 我正在尝试在Java主机和android客户端之间设置双向身份验证SSL连接。不知道为什么它没有连接。以下是Android客户端应用和Java服务器的代码。 客户代码: 服务器代码: 我在服务器上遇到“没有共同的密码套件”错误。由于我不在SSL连接设置中。如果您发现错误或主要问题,请允许我提供帮助。 这是我用来创建证书和信任库的链接。我创建的Truststore和kestore在这里

  • 本文向大家介绍python Socket之客户端和服务端握手详解,包括了python Socket之客户端和服务端握手详解的使用技巧和注意事项,需要的朋友参考一下 简单的学习下利用socket来建立客户端和服务端之间的连接并且发送数据 1. 客户端socketClient.py代码 2. 服务端serverSocket.py代码 3.操作过程 开两个控制台窗口,先运行服务端 python3 ser

  • 问题内容: 简而言之,我有一个独立的ES主实例和一个在我的Java应用程序中创建的客户端节点。如果在客户端节点之前启动了独立ES实例,则客户端节点会正确发现独立ES实例。 我面临的问题是-如果由于某种原因,客户端节点在独立ES实例之前启动,我会看到“ MasterNotDiscoveredException”,这也是可预期的。但是,即使启动独立的ES实例后,我仍然会看到相同的异常。我应该更改一些配

  • 问题内容: 我用Node.js运行一个简单的http服务器: 我的index.html文件: 现在,我想在我的index.html文件中打印服务器端变量:temp。但是我不知道该怎么做。 也许有人可以帮助我从服务器到客户端交换变量。 问题答案: 正如您可以在@WebServer的答案中看到的那样,节点中有多种模板引擎。 我想给你一个使用其中一个的例子-EJS: 首先安装它: server.js:

  • 在我的环境中,“Java 1.7 TLS 1.1服务器”和“Java 1.8客户端”之间的SSL/TLS握手失败,服务器端出现以下异常: Java语言安全NoSuchAlgorithmException:没有这样的算法:SunTls12MasterSecret用于提供程序SunPKCS11 NSSFIP 以下是我的环境中服务器和客户端的详细信息: 服务器: 服务器使用Java1.7u45,在FIP