我正在用KafkaJS编写一个NodeJS Kafka生产者,但我很难理解如何获得所需的SSL证书,以便使用SASL-SSL连接连接到Kafka。在KafkaJS文档中,有这样的SSL配置:
ssl: {
rejectUnauthorized: false,
ca: [fs.readFileSync('/my/custom/ca.crt', 'utf-8')],
key: fs.readFileSync('/my/custom/client-key.pem', 'utf-8'),
cert: fs.readFileSync('/my/custom/client-cert.pem', 'utf-8')
},
我有问题,因为我不知道我应该如何/提供什么证书给它。
我需要提供所有三个道具(ca、key和cert(吗??如果是,如何获得它们?我们有这样配置的Kafka集群Confluent Security Tutorial我是否必须解码密钥库或其他东西才能为我的KafkaJS获得正确的证书制作人我对这一切一知半解。
您的broker是否强制执行客户端身份验证?如果是,则需要key
和cert
。如果您的客户端运行在"标准"计算机上,那么最知名的CA将已经存在,例如/etc/ssl/certs
。在这种情况下,仅需要ssl : true
。如果您使用的是自签名证书,而不是客户端身份验证,则需要提供ca
。
所以,以下是您的选择。
客户端身份验证
如果CA是自签名的,那么也添加ca
(见下文(。
ssl: {
key: fs.readFileSync('/my/custom/client-key.pem', 'utf-8'),
cert: fs.readFileSync('/my/custom/client-cert.pem', 'utf-8')
}
自签名证书
ssl: {
rejectUnauthorized: false,
ca: [fs.readFileSync('/my/custom/ca.crt', 'utf-8')]
}
rejectUnauthorized : false
将而不是对照已知CA 进行检查
有关更多信息,请参阅此SO问题。