在Ubuntu上配置Kafka以使用SSL加密涉及几个步骤,包括生成SSL证书和密钥、配置Kafka服务器和客户端。以下是一个详细的指南:
1. 生成SSL证书和密钥
首先,你需要生成SSL证书和密钥。你可以使用OpenSSL来完成这个任务。
生成CA证书和密钥
# 创建CA目录 mkdir kafka-ssl-ca cd kafka-ssl-ca # 生成CA私钥 openssl genrsa -out ca-key.pem 2048 # 生成CA证书 openssl req -new -x509 -days 3650 -key ca-key.pem -out ca-cert.pem -subj "/C=US/ST=State/L=City/O=Organization/CN=KafkaSSLCA"
生成服务器证书和密钥
# 创建服务器目录 mkdir kafka-ssl-server cd kafka-ssl-server # 生成服务器私钥 openssl genrsa -out server-key.pem 2048 # 生成服务器证书签名请求(CSR) openssl req -new -key server-key.pem -out server-csr.pem -subj "/C=US/ST=State/L=City/O=Organization/CN=kafka-server" # 使用CA证书签名服务器CSR openssl x509 -req -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 365
生成客户端证书和密钥
# 创建客户端目录 mkdir kafka-ssl-client cd kafka-ssl-client # 生成客户端私钥 openssl genrsa -out client-key.pem 2048 # 生成客户端证书签名请求(CSR) openssl req -new -key client-key.pem -out client-csr.pem -subj "/C=US/ST=State/L=City/O=Organization/CN=kafka-client" # 使用CA证书签名客户端CSR openssl x509 -req -in client-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 365
2. 配置Kafka服务器
编辑Kafka服务器配置文件server.properties
,通常位于/etc/kafka/server.properties
。
# 启用SSL listeners=SSL://:9093 advertised.listeners=SSL://your_server_hostname:9093 # SSL配置 ssl.keystore.location=/path/to/kafka-ssl-server/server-keystore.jks ssl.keystore.password=your_keystore_password ssl.key.password=your_key_password ssl.truststore.location=/path/to/kafka-ssl-server/server-truststore.jks ssl.truststore.password=your_truststore_password # 启用SSL协议 ssl.enabled.protocols=TLSv1.2,TLSv1.3 # 启用SSL密码套件 ssl.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
3. 配置Kafka客户端
编辑Kafka客户端配置文件client.properties
,通常位于/etc/kafka/client.properties
。
# 启用SSL security.protocol=SSL # SSL配置 ssl.truststore.location=/path/to/kafka-ssl-client/client-truststore.jks ssl.truststore.password=your_truststore_password ssl.keystore.location=/path/to/kafka-ssl-client/client-keystore.jks ssl.keystore.password=your_keystore_password # 启用SSL协议 ssl.enabled.protocols=TLSv1.2,TLSv1.3 # 启用SSL密码套件 ssl.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
4. 启动Kafka服务器和客户端
启动Kafka服务器:
sudo systemctl start kafka
启动Kafka客户端(例如,使用kafkacat):
kafkacat -b your_server_hostname:9093 -t your_topic -Z SSL -C /path/to/kafka-ssl-client/client-truststore.jks -K /path/to/kafka-ssl-client/client-keystore.jks
5. 验证SSL连接
你可以使用openssl s_client
命令来验证SSL连接:
openssl s_client -connect your_server_hostname:9093 -CAfile /path/to/kafka-ssl-ca/ca-cert.pem
通过以上步骤,你应该能够在Ubuntu上成功配置Kafka以使用SSL加密。确保所有路径和密码都正确无误,并且在配置文件中进行适当的调整。