微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SASL_SSL 安全协议如何工作?客户端是否验证服务器X.509 证书?

如何解决SASL_SSL 安全协议如何工作?客户端是否验证服务器X.509 证书?

SSL 的工作原理众所周知,因为它在任何地方都得到了广泛的使用和描述。简而言之 - SSL 涉及

  1. 客户端通过验证服务器 X.509 证书来验证服务器的真实性。
  2. 然后使用 diffie-hellman 密钥交换算法获得对称密钥。

但我不确定/** * Await the result of all the Calls in parallel. Any exception thrown by any item * in the list will cancel all unfinished calls and be rethrown. */ suspend fun <T: Any> Iterable<Call<T>>.awaitAll(): List<T> = coroutinescope { map { async { it.await } }.awaitAll() } //... lifecycleScope.launch { val requests: List<Call<UploadedRead>> = listof( //... ) val responses: List<UploadedRead> = try { requests.awaitAll() } catch (e: HttpException) { //... return@launch } //... } 会发生什么。 Kafka 等少数技术的客户端和服务器通信依赖此安全协议作为选项之一。在这里,我担心上面的第 1 点。如果我从某人那里得到错误的经纪人地址(作为一种技巧),SASL_SSL 是否验证服务器证书是我的问题。如果是这样,那么我可以确定接收到的代理不是真实的,我的应用程序不会发布或订阅来自该服务器的消息,我的数据是安全的。

编辑 1:遵循@steffen-ullrich 的回答和评论 还有更多的挖掘,我在下面看到。看起来证书验证在通过 chrome 使用时正在发生,并且可能也在 security.protocol=SASL_SSL 中加载。所以java代码能够验证服务器..看起来没问题..

编辑 2:对,证书 DST 和 ISRG 预加载在 JDK 11 cacerts 中,因此客户端能够按照 Stephen 的评论对服务器进行身份验证。

enter image description here

解决方法

您所问的与其他配置有关,请阅读以下说明。

ssl.endpoint.identification.algorithm 客户端用于验证服务器主机名的端点识别算法。默认值为 https。包括由代理创建的用于代理间通信的客户端连接的客户端验证代理主机名是否与代理证书中的主机名匹配。通过将 ssl.endpoint.identification.algorithm 设置为空字符串来禁用服务器主机名验证。 类型:字符串 默认值:https 重要性:中等

,

SASL 是客户端身份验证的标准 - 参见 Simple Authentication and Security Layer。 SASL_SSL 仅表示通过受保护的连接 (SSL) 使用客户端身份验证 (SASL) 来防止拦截,而不是通过普通连接。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。