如何使用java客户端中的PEM
编码文件配置kafka进行TLS通信。我在那里看到的所有文档都谈到了创建和使用java KeyStore
和trustStore
。
https://kafka.apache.org/10/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html,https://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
?
答案 0 :(得分:2)
从 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
答案 1 :(得分:1)