在Ubuntu上配置Kafka以使用SSL加密涉及几个步骤,包括生成SSL证书和密钥、配置Kafka服务器和客户端。以下是一个详细的指南:
首先,你需要生成SSL证书和密钥。你可以使用OpenSSL来完成这个任务。
# 创建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
编辑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
编辑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
启动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
你可以使用openssl s_client
命令来验证SSL连接:
openssl s_client -connect your_server_hostname:9093 -CAfile /path/to/kafka-ssl-ca/ca-cert.pem
通过以上步骤,你应该能够在Ubuntu上成功配置Kafka以使用SSL加密。确保所有路径和密码都正确无误,并且在配置文件中进行适当的调整。