gpt4 book ai didi

ssl - Kafka如何为Client Authentication指定 key 别名?

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:40 26 4
gpt4 key购买 nike

我看到很多地方都显示使用与此处相同的示例代码启用 Kafka 客户端身份验证:

https://www.cloudera.com/documentation/kafka/latest/topics/kafka_security.html#deploying_ssl_for_kafka__d18295e284

即:

ssl.keystore.location=/var/private/ssl/kafka.client.keystore.jks
ssl.keystore.password=test1234
ssl.key.password=test1234

我的问题是,客户端如何指定要使用的 keystore 中的特定 key ?在我看到 JKS keystore 讨论的其他任何地方, key 都是使用别名指定的。我唯一能想到的是:

  • 别名应该是硬编码的(但是我找不到任何关于这个事实的引用)
  • 预计 keystore 中只有一个 key ,因此它使用它找到的第一个 key
  • 它扫描并使用密码与 ssl.key.password 属性值匹配的第一个

最佳答案

以上都不是。如果您未指定 ssl.keymanager.algorithm(参见 SslConfigs:96),则它使用 JVM 默认值(参见 SslEngineBuilder:138),这可能是 SunX509(唯一的标准名称是 PKIX,但没有说明它有什么不同;参见 Standard Algorithm Names § KeyManagerFactory algorithms)。尽管描述了标准算法,RFC 3280本身不指定 key 选择过程。然而,实际实现只是选择所需类型之一的一些 key ,相应证书的证书路径包含所需颁发者之一(请参阅从 SunX509KeyManagerImpl.chooseClientAlias 开始的调用链)。

因此客户端对 key 别名的选择将由服务器表示它信任的证书颁发者和服务器表示它接受的 key 类型决定(今天这几乎总是 RSA,但在未来或在特定情况下)。如果您只有 1 个由服务器信任的 CA 颁发的 RSA key ,那么它将选择该 key 。如果为 0,则连接将失败,如果为 2 个或更多,则不知道将选择哪个。特别是,拥有同时符合条件的过期和未过期证书会带来麻烦。

我在 terse systems blog post 上发现了一些关于 KeyManagerKeyStore 的有趣细节,但是如果不修补 Kafka 本身,他们谈论的一些定制是不可能的。如果您需要更精确地控制 key 选择,您可能必须实现自己的 KeyManager 或使用满足您需求的第三方 key 管理器。

关于ssl - Kafka如何为Client Authentication指定 key 别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44933407/

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