gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:56 25 4
gpt4 key购买 nike

我正在使用 T.Rob 的建议调试 Websphere MQ 服务器和客户端之间的 SSL 错误,需要帮助来理解 SSL 握手 (SSL connect to MQ using .net mq client SSLV3?)。

我的 WMQ 7.5 客户端应用程序是 C 代码并使用 keystore (.kdb)。利用 WebSphere 管理员提供的 CHLTAB。 WMQ 服务器正在运行 Java,并且 channel 是通过相互身份验证定义的。

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

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

预先感谢您的澄清!

最佳答案

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

TLS 握手的第一部分是客户端验证服务器证书的地方。使用公钥/私钥对是确保另一方事物真实性的方式。为此,服务器必须拥有自己的个人证书,而客户端必须拥有签名者链根的公钥。在自签名证书的情况下,个人证书的公共(public)部分必须受到客户端的信任。在 CA 签名证书的情况下,CA Root 必须受到客户端的信任。无论是哪一种,客户端必须信任用于签署服务器个人证书的东西,否则该证书无法通过验证。

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

按照这个逻辑,对于匿名客户端连接,所需的部分是 QMgr keystore 中的个人证书(因为它包含 QMgr 的私钥),以及客户端 KDB 中匹配的可信证书或 Java 信任库。这些都不是可选的。

如果要对客户端进行身份验证,您仍然需要与匿名客户端相同的两个证书,因为握手的那一部分必须在对客户端进行身份验证之前完成。此外,现在您还需要客户端拥有自己的个人证书(因为它包含客户端的私钥)并且 QMgr 现在需要信任任何签署客户端证书的内容 - 如果是自签名的客户端证书,或者如果是 CA 的签名者根证书-签名。


作为旁注,帖子中也存在一些混淆,因为它说“我的 WMQ 7.5 客户端应用程序是 C 代码,而 WMQ 服务器正在运行 Java”。在服务器端使用 Java 的队列管理器中没有任何内容。安装了 Java 组件来执行管理 JNDI 对象和运行示例代码等操作。在现代 MQ 版本中,Java 运行 Web 控制台。但是 QMgr 本身没有 Java 组件,传入 channel 连接请求的路径中也没有 Java 组件。这都是 QMgr 的监听器、代理和其他内部进程的麻烦。因此,除了在 MQ 服务器端运行并参与 TLS 握手的 Java 概念可能是帖子中提到的一些混淆的根源之外,我完全不确定那里指的是什么。 ;-)

关于Websphere MQ 服务器和客户端之间的 SSL/TLS 握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46211764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com