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

无法为Kafka Connect REST API配置SSL

别烨熠
2023-03-14

我正在尝试为Kafka Connect REST API(2.11-2.1.0)配置SSL。

问题所在

我尝试了两种配置(工人配置):

  • 带有侦听器.https.前缀
listeners=https://localhost:9000
listeners.https.ssl.keystore.location=/mypath/keystore.jks
listeners.https.ssl.keystore.password=mypassword
listeners.https.ssl.key.password=mypassword
    < li >并且不带< code>listeners.https.前缀
listeners=https://localhost:9000
ssl.keystore.location=/mypath/keystore.jks
ssl.keystore.password=mypassword
ssl.key.password=mypassword

两种配置都启动正常,并在尝试连接到https://localhost:9000时显示以下异常:

javax.net.ssl.SSLHandshakeException: no cipher suites in common

在日志中,我看到SslContextWorks是使用任何密钥库创建的,但使用密码:

210824 ssl.SslContextFactory:350 DEBUG: Selected Protocols [TLSv1.2, TLSv1.1, TLSv1] of [SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2]
210824 ssl.SslContextFactory:351 DEBUG: Selected Ciphers   [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, ...]
210824 component.AbstractLifeCycle:177 DEBUG: STARTED @10431ms SslContextFactory@42f8285e[provider=null,keyStore=null,trustStore=null]

因为我知道密钥库中的密码是绝对正确的,所以我深入研究了源代码,并开始调试。

最后,我发现无论是纯 ssl.* 还是前缀 listeners.https.ssl.* 配置都没有被考虑在内,事实证明目前不可能为 Kafka Connect REST API 配置 SSL。

调用顺序为:

  1. RestServer。创建连接器
  2. SSLU瓷砖。createSslContext工厂
  3. AbstractConfig.values WithPrefixAll或Nothing

最后一种方法是麻烦的原因。

如果我们有 listeners.https. 属性,则无法返回它们,因为它们在第 254 行过滤掉(因为 WorkerConfig 不包含带前缀的属性)。

否则,如果我们有无前缀的< code>ssl。属性,它们也不会返回,因为< code>values字段只包含来自同一WorkerConfig的已知属性(< code>values是ConfigDef.parse的结果)。

我是否遗漏了什么,是否有人成功为kafka连接rest api配置了SSL?

共有2个答案

华哲茂
2023-03-14

我还没有测试Connect REST API,但KafkaTemplate使用ssl发送和接收消息。从您的配置中,我可能会假设两个问题:

  • 您没有指定信任库(用于证书链检查)
  • 您使用了绝对路径,但springkeystore位置解释为相对于/webapp的

我尝试从示例测试应用程序:https://memorynotfound.com/spring-kafka-and-spring-boot-configuration-example/和https://gist.github.com/itzg/e3ebfd7aec220bf0522e23a65b1296c8

测试了2.0.4.RELEASE,使用了kafka库

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

这是我的应用程序。属性内容:

spring.application.name=my-stream-app
spring.kafka.bootstrap-servers=localhost:9093
spring.kafka.ssl.truststore-location=kafka.server.truststore.jks
spring.kafka.ssl.truststore-password=123456 
spring.kafka.ssl.keystore-location=kafka.server.keystore.jks
spring.kafka.ssl.keystore-password=123456 
spring.kafka.ssl.key-password=123456
spring.kafka.properties.security.protocol=SSL

spring.kafka.consumer.group-id=properties test-consumer-group        
app.topic.foo=test 

Kafka 服务器配置片段:

listeners=SSL://localhost:9093

ssl.truststore.location=/home/legioner/kafka.server.truststore.jks
ssl.truststore.password=123456
ssl.keystore.location=/home/legioner/kafka.server.keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
吕森
2023-03-14

尝试导出KAFKA_OPTS=-Djava.security.auth.login.config=/apps/KAFKA/conf/KAFKA/kf_jaas。conf其中kf_jaas。conf包含ZooKeeper客户端身份验证

 类似资料:
  • 我无法在android studio中配置Kotlin。获取错误错误:找不到方法com。Android建筑格拉德尔。内部的变种BaseVariantData。getOutputs()Ljava/util/List;'。

  • SpringBoot似乎无法加载位于src/main/resources上的application.properties文件(也许不是)。我需要添加什么额外的配置来引导我的应用程序? 错误跟踪: 由: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:无法

  • 我的IBM Liberty中有以下配置: 我还有一个消息驱动的bean用于处理队列中出现的消息。一切正常。 我希望迁移到open-liberty并保留我的JMS内容,但它们的文档有点不同,即使有相同的配置元素。

  • 我有一个常春藤和人工制品设置要发布,并依赖于构建。 在Artifactory中,我有一个Ivy文件,大致如下: 当我在另一个项目中依赖这个模块时,我指定了编译配置,但IvyDE告诉我编译不存在。 在这个设置中,我得到了错误消息 “在组织#模块中找不到配置;0.277-快照:'编译'” 如果依赖conf更新为编译,我确实会得到jar- 有什么建议吗?

  • 我从互联网上下载了jacoco,并将源目录下的文件夹复制到名为reports的文件夹中。现在我有以下内容 但是在下面的链接上https://github.com/SonarSource/sonar-examples/tree/master/projects/code-coverage/it/sonar-runner/it-jacoco-sonar-runner/reports 我看到jacoco.

  • 问题内容: 大家好,我是hibernate的初学者,我知道这里有很多类似的问题。我试图从他们那里解决,但我做不到。我还试图在dtd中将SYSTEM从PUBLIC更改为,但是它不起作用。我用谷歌搜索它,但是到处都显示dtd语句错误。 这是我的配置文件。 我尝试将版本3.0更改为4.0,因为我正在使用hibernate版本4.3.6,但仍无法正常工作。请帮帮我。 这是我的userDetails类。 软