【问题标题】:How to configure kafka for TLS communication using `PEM` encoded files in java如何使用 java 中的“PEM”编码文件配置 kafka 进行 TLS 通信
【发布时间】:2021-02-23 00:46:38
【问题描述】:

如何在 java 客户端中使用 PEM 编码文件配置 kafka 进行 TLS 通信。我在那里看到的所有文档都谈到了创建和使用 java KeyStoretrustStore

https://kafka.apache.org/10/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.htmlhttps://www.confluent.io/blog/apache-kafka-security-authorization-authentication-encryption/https://docs.confluent.io/current/kafka/authentication_ssl.html

我有 x.509 编码的 cert、private_key 和 ca 文件,我如何使用它们连接到 golang 中的 kafka(只是一个示例)是这样的

func connect(brokers []string, certs map[string][]byte) {

    certpool := x509.NewCertPool()
    certpool.AppendCertsFromPEM(certs["ca"])
    c, err := tls.X509KeyPair(certs["cert"], certs["private_key"])

    tls := tls.Config{
        RootCAs:            certpool,
        ClientAuth:         tls.NoClientCert,
        ClientCAs:          nil,
        Certificates:       []tls.Certificate{c},
    }

    config := sarama.NewConfig()
    config.Producer.Return.Successes = true
    config.Net.TLS.Enable = true
    config.Net.TLS.Config = &tls
}

如何在 java 中复制相同的行为,也许我在这里遗漏了一些东西,但是否有任何我可以参考的 api/文档让我们配置 PEM 编码的内容而不是创建 keyStore

【问题讨论】:

    标签: java ssl apache-kafka


    【解决方案1】:

    从 2.7.0 开始,Kafka 支持 PEM 格式。

    这是实现它的合并请求:https://issues.apache.org/jira/browse/KAFKA-10338

    这是添加 PEM 格式的提案,该格式比他们的 docs/security.html 更好地记录了该功能: https://cwiki.apache.org/confluence/display/KAFKA/KIP-651+-+Support+PEM+format+for+SSL+certificates+and+private+key

    【讨论】:

      【解决方案2】:

      您不能直接在 Java 中使用 PEM 编码的秘密。

      使用opensslkeytool,您可以将证书导入Java 客户端的JKS。

      Import PEM into Java Key Store

      【讨论】:

      • 我明白了,为什么 java 不支持使用 PEM 文件配置 TLS 有什么特别的原因吗??
      • 那个,恐怕我不知道!
      猜你喜欢
      • 2021-09-28
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 2012-11-13
      相关资源
      最近更新 更多