在Ubuntu上配置Kafka的安全认证,通常涉及以下几个步骤:
首先,确保你已经安装了Kafka。你可以从Apache Kafka官方网站下载并按照安装指南进行安装。
为了启用SSL/TLS加密通信,你需要配置Kafka服务器和客户端的SSL/TLS设置。
你可以使用OpenSSL生成自签名证书和密钥。
# 生成CA证书
openssl req -new -x509 -days 365 -keyout ca-key.pem -out ca-cert.pem -subj "/CN=kafka-ca"
# 生成服务器证书和密钥
openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem -subj "/CN=kafka-server"
openssl x509 -req -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 365
# 生成客户端证书和密钥
openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem -subj "/CN=kafka-client"
openssl x509 -req -in client-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 365
编辑server.properties
文件,添加以下配置:
listeners=SSL://:9093
ssl.keystore.location=/path/to/server-keystore.jks
ssl.keystore.password=your_keystore_password
ssl.key.password=your_key_password
ssl.truststore.location=/path/to/server-truststore.jks
ssl.truststore.password=your_truststore_password
ssl.protocol=TLSv1.2
ssl.enabled.protocols=TLSv1.2
ssl.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
将生成的证书和密钥导入到Java KeyStore和TrustStore中:
# 创建服务器KeyStore
keytool -importkeystore -srckeystore server-key.pem -srcstoretype PKCS12 -destkeystore server-keystore.jks -deststoretype JKS
# 创建服务器TrustStore
keytool -importkeystore -srckeystore server-cert.pem -srcstoretype PKCS12 -destkeystore server-truststore.jks -deststoretype JKS
# 创建客户端KeyStore
keytool -importkeystore -srckeystore client-key.pem -srcstoretype PKCS12 -destkeystore client-keystore.jks -deststoretype JKS
# 创建客户端TrustStore
keytool -importkeystore -srckeystore client-cert.pem -srcstoretype PKCS12 -destkeystore client-truststore.jks -deststoretype JKS
编辑客户端配置文件(例如producer.properties
和consumer.properties
),添加以下配置:
security.protocol=SSL
ssl.truststore.location=/path/to/client-truststore.jks
ssl.truststore.password=your_truststore_password
ssl.keystore.location=/path/to/client-keystore.jks
ssl.keystore.password=your_keystore_password
ssl.key.password=your_key_password
为了启用SASL认证,你需要配置Kafka服务器和客户端的SASL设置。
编辑server.properties
文件,添加以下配置:
listeners=SASL_SSL://:9093
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="admin-secret";
编辑客户端配置文件(例如producer.properties
和consumer.properties
),添加以下配置:
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="admin-secret";
完成上述配置后,重启Kafka服务器以应用更改。
sudo systemctl restart kafka
使用Kafka命令行工具验证配置是否正确。例如,创建一个主题并生产一些消息:
kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9093 --partitions 1 --replication-factor 1
kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9093 --property security.protocol=SASL_SSL --property sasl.mechanism=PLAIN --property sasl.jaas.config="org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='admin-secret';"
然后消费消息:
kafka-console-consumer.sh --topic test-topic --bootstrap-server localhost:9093 --from-beginning --property security.protocol=SASL_SSL --property sasl.mechanism=PLAIN --property sasl.jaas.config="org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='admin-secret';"
通过以上步骤,你应该能够在Ubuntu上成功配置Kafka的安全认证。