在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的安全认证。